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

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

Issue 223783006: Mojo: Make Channel take a RawChannel rather than creating it. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: spurious space 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/channel.h ('k') | mojo/system/multiprocess_message_pipe_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/channel.h" 5 #include "mojo/system/channel.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/message_loop/message_loop.h"
12 #include "base/strings/stringprintf.h" 11 #include "base/strings/stringprintf.h"
13 #include "mojo/system/message_pipe_endpoint.h" 12 #include "mojo/system/message_pipe_endpoint.h"
14 13
15 namespace mojo { 14 namespace mojo {
16 namespace system { 15 namespace system {
17 16
18 COMPILE_ASSERT(Channel::kBootstrapEndpointId != 17 COMPILE_ASSERT(Channel::kBootstrapEndpointId !=
19 MessageInTransit::kInvalidEndpointId, 18 MessageInTransit::kInvalidEndpointId,
20 kBootstrapEndpointId_is_invalid); 19 kBootstrapEndpointId_is_invalid);
21 20
22 STATIC_CONST_MEMBER_DEFINITION const MessageInTransit::EndpointId 21 STATIC_CONST_MEMBER_DEFINITION const MessageInTransit::EndpointId
23 Channel::kBootstrapEndpointId; 22 Channel::kBootstrapEndpointId;
24 23
25 Channel::EndpointInfo::EndpointInfo() { 24 Channel::EndpointInfo::EndpointInfo() {
26 } 25 }
27 26
28 Channel::EndpointInfo::EndpointInfo(scoped_refptr<MessagePipe> message_pipe, 27 Channel::EndpointInfo::EndpointInfo(scoped_refptr<MessagePipe> message_pipe,
29 unsigned port) 28 unsigned port)
30 : message_pipe(message_pipe), 29 : message_pipe(message_pipe),
31 port(port) { 30 port(port) {
32 } 31 }
33 32
34 Channel::EndpointInfo::~EndpointInfo() { 33 Channel::EndpointInfo::~EndpointInfo() {
35 } 34 }
36 35
37 Channel::Channel() 36 Channel::Channel()
38 : next_local_id_(kBootstrapEndpointId) { 37 : next_local_id_(kBootstrapEndpointId) {
39 } 38 }
40 39
41 bool Channel::Init(embedder::ScopedPlatformHandle handle) { 40 bool Channel::Init(scoped_ptr<RawChannel> raw_channel) {
42 DCHECK(creation_thread_checker_.CalledOnValidThread()); 41 DCHECK(creation_thread_checker_.CalledOnValidThread());
42 DCHECK(raw_channel);
43 43
44 // No need to take |lock_|, since this must be called before this object 44 // No need to take |lock_|, since this must be called before this object
45 // becomes thread-safe. 45 // becomes thread-safe.
46 DCHECK(!raw_channel_.get()); 46 DCHECK(!raw_channel_);
47 raw_channel_ = raw_channel.Pass();
47 48
48 CHECK_EQ(base::MessageLoop::current()->type(), base::MessageLoop::TYPE_IO); 49 if (!raw_channel_->Init(this)) {
49 raw_channel_.reset(RawChannel::Create(handle.Pass(), this,
50 static_cast<base::MessageLoopForIO*>(
51 base::MessageLoop::current())));
52 if (!raw_channel_->Init()) {
53 raw_channel_.reset(); 50 raw_channel_.reset();
54 return false; 51 return false;
55 } 52 }
56 53
57 return true; 54 return true;
58 } 55 }
59 56
60 void Channel::Shutdown() { 57 void Channel::Shutdown() {
61 DCHECK(creation_thread_checker_.CalledOnValidThread()); 58 DCHECK(creation_thread_checker_.CalledOnValidThread());
62 59
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 LOG(WARNING) << error_message; 283 LOG(WARNING) << error_message;
287 } 284 }
288 285
289 void Channel::HandleLocalError(const base::StringPiece& error_message) { 286 void Channel::HandleLocalError(const base::StringPiece& error_message) {
290 // TODO(vtl): Is this how we really want to handle this? 287 // TODO(vtl): Is this how we really want to handle this?
291 LOG(WARNING) << error_message; 288 LOG(WARNING) << error_message;
292 } 289 }
293 290
294 } // namespace system 291 } // namespace system
295 } // namespace mojo 292 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/system/channel.h ('k') | mojo/system/multiprocess_message_pipe_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698