OLD | NEW |
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/public/cpp/bindings/lib/connector.h" | 5 #include "mojo/public/cpp/bindings/lib/connector.h" |
6 | 6 |
7 #include <stddef.h> | |
8 | |
9 #include "mojo/public/cpp/bindings/error_handler.h" | 7 #include "mojo/public/cpp/bindings/error_handler.h" |
10 #include "mojo/public/cpp/environment/logging.h" | 8 #include "mojo/public/cpp/environment/logging.h" |
11 | 9 |
12 namespace mojo { | 10 namespace mojo { |
13 namespace internal { | 11 namespace internal { |
14 | 12 |
15 // ---------------------------------------------------------------------------- | 13 // ---------------------------------------------------------------------------- |
16 | 14 |
17 Connector::Connector(ScopedMessagePipeHandle message_pipe, | 15 Connector::Connector(ScopedMessagePipeHandle message_pipe, |
18 const MojoAsyncWaiter* waiter) | 16 const MojoAsyncWaiter* waiter) |
19 : error_handler_(NULL), | 17 : error_handler_(nullptr), |
20 waiter_(waiter), | 18 waiter_(waiter), |
21 message_pipe_(message_pipe.Pass()), | 19 message_pipe_(message_pipe.Pass()), |
22 incoming_receiver_(NULL), | 20 incoming_receiver_(nullptr), |
23 async_wait_id_(0), | 21 async_wait_id_(0), |
24 error_(false), | 22 error_(false), |
25 drop_writes_(false), | 23 drop_writes_(false), |
26 enforce_errors_from_incoming_receiver_(true), | 24 enforce_errors_from_incoming_receiver_(true), |
27 destroyed_flag_(NULL) { | 25 destroyed_flag_(nullptr) { |
28 // Even though we don't have an incoming receiver, we still want to monitor | 26 // Even though we don't have an incoming receiver, we still want to monitor |
29 // the message pipe to know if is closed or encounters an error. | 27 // the message pipe to know if is closed or encounters an error. |
30 WaitToReadMore(); | 28 WaitToReadMore(); |
31 } | 29 } |
32 | 30 |
33 Connector::~Connector() { | 31 Connector::~Connector() { |
34 if (destroyed_flag_) | 32 if (destroyed_flag_) |
35 *destroyed_flag_ = true; | 33 *destroyed_flag_ = true; |
36 | 34 |
37 CancelWait(); | 35 CancelWait(); |
(...skipping 30 matching lines...) Expand all Loading... |
68 if (error_) | 66 if (error_) |
69 return false; | 67 return false; |
70 | 68 |
71 if (drop_writes_) | 69 if (drop_writes_) |
72 return true; | 70 return true; |
73 | 71 |
74 MojoResult rv = WriteMessageRaw( | 72 MojoResult rv = WriteMessageRaw( |
75 message_pipe_.get(), | 73 message_pipe_.get(), |
76 message->data(), | 74 message->data(), |
77 message->data_num_bytes(), | 75 message->data_num_bytes(), |
78 message->mutable_handles()->empty() ? NULL : | 76 message->mutable_handles()->empty() ? nullptr : |
79 reinterpret_cast<const MojoHandle*>( | 77 reinterpret_cast<const MojoHandle*>( |
80 &message->mutable_handles()->front()), | 78 &message->mutable_handles()->front()), |
81 static_cast<uint32_t>(message->mutable_handles()->size()), | 79 static_cast<uint32_t>(message->mutable_handles()->size()), |
82 MOJO_WRITE_MESSAGE_FLAG_NONE); | 80 MOJO_WRITE_MESSAGE_FLAG_NONE); |
83 | 81 |
84 switch (rv) { | 82 switch (rv) { |
85 case MOJO_RESULT_OK: | 83 case MOJO_RESULT_OK: |
86 // The handles were successfully transferred, so we don't need the message | 84 // The handles were successfully transferred, so we don't need the message |
87 // to track their lifetime any longer. | 85 // to track their lifetime any longer. |
88 message->mutable_handles()->clear(); | 86 message->mutable_handles()->clear(); |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 | 196 |
199 void Connector::NotifyError() { | 197 void Connector::NotifyError() { |
200 error_ = true; | 198 error_ = true; |
201 CancelWait(); | 199 CancelWait(); |
202 if (error_handler_) | 200 if (error_handler_) |
203 error_handler_->OnConnectionError(); | 201 error_handler_->OnConnectionError(); |
204 } | 202 } |
205 | 203 |
206 } // namespace internal | 204 } // namespace internal |
207 } // namespace mojo | 205 } // namespace mojo |
OLD | NEW |