Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(402)

Side by Side Diff: mojo/system/raw_channel_posix.cc

Issue 257623003: Mojo: Add RawChannel tests for calling Shutdown() from OnReadMessage()/OnFatalError(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add comment Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « mojo/system/raw_channel.cc ('k') | mojo/system/raw_channel_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "mojo/system/raw_channel.h" 5 #include "mojo/system/raw_channel.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <sys/uio.h> 8 #include <sys/uio.h>
9 #include <unistd.h> 9 #include <unistd.h>
10 10
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 104
105 ssize_t read_result = HANDLE_EINTR(read(fd_.get().fd, buffer, bytes_to_read)); 105 ssize_t read_result = HANDLE_EINTR(read(fd_.get().fd, buffer, bytes_to_read));
106 106
107 if (read_result > 0) { 107 if (read_result > 0) {
108 *bytes_read = static_cast<size_t>(read_result); 108 *bytes_read = static_cast<size_t>(read_result);
109 return IO_SUCCEEDED; 109 return IO_SUCCEEDED;
110 } 110 }
111 111
112 // |read_result == 0| means "end of file". 112 // |read_result == 0| means "end of file".
113 if (read_result == 0 || (errno != EAGAIN && errno != EWOULDBLOCK)) { 113 if (read_result == 0 || (errno != EAGAIN && errno != EWOULDBLOCK)) {
114 if (read_result != 0) 114 PLOG_IF(ERROR, read_result != 0) << "read";
115 PLOG(ERROR) << "read";
116 115
117 // Make sure that |OnFileCanReadWithoutBlocking()| won't be called again. 116 // Make sure that |OnFileCanReadWithoutBlocking()| won't be called again.
118 read_watcher_.reset(); 117 read_watcher_.reset();
119 118
120 return IO_FAILED; 119 return IO_FAILED;
121 } 120 }
122 121
123 return ScheduleRead(); 122 return ScheduleRead();
124 } 123 }
125 124
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 write_result = embedder::PlatformChannelWritev(fd_.get(), iov, 166 write_result = embedder::PlatformChannelWritev(fd_.get(), iov,
168 buffer_count); 167 buffer_count);
169 } 168 }
170 169
171 if (write_result >= 0) { 170 if (write_result >= 0) {
172 *bytes_written = static_cast<size_t>(write_result); 171 *bytes_written = static_cast<size_t>(write_result);
173 return IO_SUCCEEDED; 172 return IO_SUCCEEDED;
174 } 173 }
175 174
176 if (errno != EAGAIN && errno != EWOULDBLOCK) { 175 if (errno != EAGAIN && errno != EWOULDBLOCK) {
177 PLOG(ERROR) << "write of size " 176 PLOG(ERROR) << "write";
178 << write_buffer_no_lock()->GetTotalBytesToWrite();
179 return IO_FAILED; 177 return IO_FAILED;
180 } 178 }
181 179
182 return ScheduleWriteNoLock(); 180 return ScheduleWriteNoLock();
183 } 181 }
184 182
185 RawChannel::IOResult RawChannelPosix::ScheduleWriteNoLock() { 183 RawChannel::IOResult RawChannelPosix::ScheduleWriteNoLock() {
186 write_lock().AssertAcquired(); 184 write_lock().AssertAcquired();
187 185
188 DCHECK(!pending_write_); 186 DCHECK(!pending_write_);
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 314
317 // Static factory method declared in raw_channel.h. 315 // Static factory method declared in raw_channel.h.
318 // static 316 // static
319 scoped_ptr<RawChannel> RawChannel::Create( 317 scoped_ptr<RawChannel> RawChannel::Create(
320 embedder::ScopedPlatformHandle handle) { 318 embedder::ScopedPlatformHandle handle) {
321 return scoped_ptr<RawChannel>(new RawChannelPosix(handle.Pass())); 319 return scoped_ptr<RawChannel>(new RawChannelPosix(handle.Pass()));
322 } 320 }
323 321
324 } // namespace system 322 } // namespace system
325 } // namespace mojo 323 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/system/raw_channel.cc ('k') | mojo/system/raw_channel_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698