| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "base/message_loop.h" | 5 #include "base/message_loop.h" |
| 6 #include "base/ref_counted.h" | 6 #include "base/ref_counted.h" |
| 7 #include "base/scoped_ptr.h" | 7 #include "base/scoped_ptr.h" |
| 8 #include "base/thread.h" | 8 #include "base/thread.h" |
| 9 #include "ipc/ipc_channel_proxy.h" | 9 #include "ipc/ipc_channel_proxy.h" |
| 10 #include "ipc/ipc_logging.h" | 10 #include "ipc/ipc_logging.h" |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 ChannelProxy::Context::Context(Channel::Listener* listener, | 63 ChannelProxy::Context::Context(Channel::Listener* listener, |
| 64 MessageFilter* filter, | 64 MessageFilter* filter, |
| 65 MessageLoop* ipc_message_loop) | 65 MessageLoop* ipc_message_loop) |
| 66 : listener_message_loop_(MessageLoop::current()), | 66 : listener_message_loop_(MessageLoop::current()), |
| 67 listener_(listener), | 67 listener_(listener), |
| 68 ipc_message_loop_(ipc_message_loop), | 68 ipc_message_loop_(ipc_message_loop), |
| 69 channel_(NULL), | 69 channel_(NULL), |
| 70 peer_pid_(0), | 70 peer_pid_(0), |
| 71 channel_connected_called_(false) { | 71 channel_connected_called_(false) { |
| 72 if (filter) | 72 if (filter) |
| 73 filters_.push_back(filter); | 73 filters_.push_back(make_scoped_refptr(filter)); |
| 74 } | 74 } |
| 75 | 75 |
| 76 void ChannelProxy::Context::CreateChannel(const std::string& id, | 76 void ChannelProxy::Context::CreateChannel(const std::string& id, |
| 77 const Channel::Mode& mode) { | 77 const Channel::Mode& mode) { |
| 78 DCHECK(channel_ == NULL); | 78 DCHECK(channel_ == NULL); |
| 79 channel_id_ = id; | 79 channel_id_ = id; |
| 80 channel_ = new Channel(id, mode, this); | 80 channel_ = new Channel(id, mode, this); |
| 81 } | 81 } |
| 82 | 82 |
| 83 bool ChannelProxy::Context::TryFilters(const Message& message) { | 83 bool ChannelProxy::Context::TryFilters(const Message& message) { |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 delete message; | 183 delete message; |
| 184 OnChannelClosed(); | 184 OnChannelClosed(); |
| 185 return; | 185 return; |
| 186 } | 186 } |
| 187 if (!channel_->Send(message)) | 187 if (!channel_->Send(message)) |
| 188 OnChannelError(); | 188 OnChannelError(); |
| 189 } | 189 } |
| 190 | 190 |
| 191 // Called on the IPC::Channel thread | 191 // Called on the IPC::Channel thread |
| 192 void ChannelProxy::Context::OnAddFilter(MessageFilter* filter) { | 192 void ChannelProxy::Context::OnAddFilter(MessageFilter* filter) { |
| 193 filters_.push_back(filter); | 193 filters_.push_back(make_scoped_refptr(filter)); |
| 194 | 194 |
| 195 // If the channel has already been created, then we need to send this message | 195 // If the channel has already been created, then we need to send this message |
| 196 // so that the filter gets access to the Channel. | 196 // so that the filter gets access to the Channel. |
| 197 if (channel_) | 197 if (channel_) |
| 198 filter->OnFilterAdded(channel_); | 198 filter->OnFilterAdded(channel_); |
| 199 } | 199 } |
| 200 | 200 |
| 201 // Called on the IPC::Channel thread | 201 // Called on the IPC::Channel thread |
| 202 void ChannelProxy::Context::OnRemoveFilter(MessageFilter* filter) { | 202 void ChannelProxy::Context::OnRemoveFilter(MessageFilter* filter) { |
| 203 for (size_t i = 0; i < filters_.size(); ++i) { | 203 for (size_t i = 0; i < filters_.size(); ++i) { |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 341 int ChannelProxy::GetClientFileDescriptor() const { | 341 int ChannelProxy::GetClientFileDescriptor() const { |
| 342 Channel *channel = context_.get()->channel_; | 342 Channel *channel = context_.get()->channel_; |
| 343 DCHECK(channel); // Channel must have been created first. | 343 DCHECK(channel); // Channel must have been created first. |
| 344 return channel->GetClientFileDescriptor(); | 344 return channel->GetClientFileDescriptor(); |
| 345 } | 345 } |
| 346 #endif | 346 #endif |
| 347 | 347 |
| 348 //----------------------------------------------------------------------------- | 348 //----------------------------------------------------------------------------- |
| 349 | 349 |
| 350 } // namespace IPC | 350 } // namespace IPC |
| OLD | NEW |