| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/edk/system/broker_state.h" | 5 #include "mojo/edk/system/broker_state.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| 11 #include "base/rand_util.h" | 11 #include "base/rand_util.h" |
| 12 #include "mojo/edk/embedder/embedder_internal.h" | 12 #include "mojo/edk/embedder/embedder_internal.h" |
| 13 #include "mojo/edk/embedder/platform_channel_pair.h" | 13 #include "mojo/edk/embedder/platform_channel_pair.h" |
| 14 #include "mojo/edk/embedder/platform_shared_buffer.h" |
| 15 #include "mojo/edk/embedder/platform_support.h" |
| 14 #include "mojo/edk/system/child_broker_host.h" | 16 #include "mojo/edk/system/child_broker_host.h" |
| 15 #include "mojo/edk/system/message_pipe_dispatcher.h" | 17 #include "mojo/edk/system/message_pipe_dispatcher.h" |
| 16 #include "mojo/edk/system/routed_raw_channel.h" | 18 #include "mojo/edk/system/routed_raw_channel.h" |
| 17 | 19 |
| 18 namespace mojo { | 20 namespace mojo { |
| 19 namespace edk { | 21 namespace edk { |
| 20 | 22 |
| 21 BrokerState* BrokerState::GetInstance() { | 23 BrokerState* BrokerState::GetInstance() { |
| 22 return base::Singleton< | 24 return base::Singleton< |
| 23 BrokerState, base::LeakySingletonTraits<BrokerState>>::get(); | 25 BrokerState, base::LeakySingletonTraits<BrokerState>>::get(); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 for (size_t i = 0; i < count; ++i) { | 60 for (size_t i = 0; i < count; ++i) { |
| 59 auto it = token_map_.find(tokens[i]); | 61 auto it = token_map_.find(tokens[i]); |
| 60 if (it == token_map_.end()) { | 62 if (it == token_map_.end()) { |
| 61 DLOG(WARNING) << "TokenToHandle didn't find token."; | 63 DLOG(WARNING) << "TokenToHandle didn't find token."; |
| 62 } else { | 64 } else { |
| 63 handles[i].handle = it->second; | 65 handles[i].handle = it->second; |
| 64 token_map_.erase(it); | 66 token_map_.erase(it); |
| 65 } | 67 } |
| 66 } | 68 } |
| 67 } | 69 } |
| 70 #else |
| 71 scoped_refptr<PlatformSharedBuffer> BrokerState::CreateSharedBuffer( |
| 72 size_t num_bytes) { |
| 73 return internal::g_platform_support->CreateSharedBuffer(num_bytes); |
| 74 } |
| 68 #endif | 75 #endif |
| 69 | 76 |
| 70 void BrokerState::ConnectMessagePipe(uint64_t pipe_id, | 77 void BrokerState::ConnectMessagePipe(uint64_t pipe_id, |
| 71 MessagePipeDispatcher* message_pipe) { | 78 MessagePipeDispatcher* message_pipe) { |
| 72 DCHECK(internal::g_io_thread_task_runner->RunsTasksOnCurrentThread()); | 79 DCHECK(internal::g_io_thread_task_runner->RunsTasksOnCurrentThread()); |
| 73 base::AutoLock auto_lock(lock_); | 80 base::AutoLock auto_lock(lock_); |
| 74 if (pending_connects_.find(pipe_id) != pending_connects_.end()) { | 81 if (pending_connects_.find(pipe_id) != pending_connects_.end()) { |
| 75 // Both ends of the message pipe are in this process. | 82 // Both ends of the message pipe are in this process. |
| 76 if (!in_process_pipes_channel1_) { | 83 if (!in_process_pipes_channel1_) { |
| 77 PlatformChannelPair channel_pair; | 84 PlatformChannelPair channel_pair; |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 237 // then when it's read it returns no messages because it doesn't have the | 244 // then when it's read it returns no messages because it doesn't have the |
| 238 // channel yet. | 245 // channel yet. |
| 239 message_pipe->GotNonTransferableChannel(raw_channel->channel()); | 246 message_pipe->GotNonTransferableChannel(raw_channel->channel()); |
| 240 // The above call could have caused |CloseMessagePipe| to be called. | 247 // The above call could have caused |CloseMessagePipe| to be called. |
| 241 if (connected_pipes_.find(message_pipe) != connected_pipes_.end()) | 248 if (connected_pipes_.find(message_pipe) != connected_pipes_.end()) |
| 242 raw_channel->AddRoute(pipe_id, message_pipe); | 249 raw_channel->AddRoute(pipe_id, message_pipe); |
| 243 } | 250 } |
| 244 | 251 |
| 245 } // namespace edk | 252 } // namespace edk |
| 246 } // namespace mojo | 253 } // namespace mojo |
| OLD | NEW |