Index: ipc/ipc_channel_win.cc |
diff --git a/ipc/ipc_channel_win.cc b/ipc/ipc_channel_win.cc |
index d044ef179f470528bd73e2463241108ad923c369..4023097bead6e997e9b5058df024c7db6d06f6fe 100644 |
--- a/ipc/ipc_channel_win.cc |
+++ b/ipc/ipc_channel_win.cc |
@@ -23,17 +23,17 @@ |
namespace IPC { |
-Channel::ChannelImpl::State::State(ChannelImpl* channel) : is_pending(false) { |
+ChannelWin::State::State(ChannelWin* channel) : is_pending(false) { |
memset(&context.overlapped, 0, sizeof(context.overlapped)); |
context.handler = channel; |
} |
-Channel::ChannelImpl::State::~State() { |
- COMPILE_ASSERT(!offsetof(Channel::ChannelImpl::State, context), |
+ChannelWin::State::~State() { |
+ COMPILE_ASSERT(!offsetof(ChannelWin::State, context), |
starts_with_io_context); |
} |
-Channel::ChannelImpl::ChannelImpl(const IPC::ChannelHandle &channel_handle, |
+ChannelWin::ChannelWin(const IPC::ChannelHandle &channel_handle, |
Mode mode, Listener* listener) |
: ChannelReader(listener), |
input_state_(this), |
@@ -48,11 +48,11 @@ Channel::ChannelImpl::ChannelImpl(const IPC::ChannelHandle &channel_handle, |
CreatePipe(channel_handle, mode); |
} |
-Channel::ChannelImpl::~ChannelImpl() { |
+ChannelWin::~ChannelWin() { |
Close(); |
} |
-void Channel::ChannelImpl::Close() { |
+void ChannelWin::Close() { |
if (thread_check_.get()) { |
DCHECK(thread_check_->CalledOnValidThread()); |
} |
@@ -80,7 +80,7 @@ void Channel::ChannelImpl::Close() { |
} |
} |
-bool Channel::ChannelImpl::Send(Message* message) { |
+bool ChannelWin::Send(Message* message) { |
DCHECK(thread_check_->CalledOnValidThread()); |
DVLOG(2) << "sending message @" << message << " on channel @" << this |
<< " with type " << message->type() |
@@ -103,8 +103,12 @@ bool Channel::ChannelImpl::Send(Message* message) { |
return true; |
} |
+base::ProcessId ChannelWin::GetPeerPID() const { |
+ return peer_pid_; |
+} |
+ |
// static |
-bool Channel::ChannelImpl::IsNamedServerInitialized( |
+bool ChannelWin::IsNamedServerInitialized( |
const std::string& channel_id) { |
if (WaitNamedPipe(PipeName(channel_id, NULL).c_str(), 1)) |
return true; |
@@ -113,7 +117,7 @@ bool Channel::ChannelImpl::IsNamedServerInitialized( |
return GetLastError() == ERROR_SEM_TIMEOUT; |
} |
-Channel::ChannelImpl::ReadState Channel::ChannelImpl::ReadData( |
+ChannelWin::ReadState ChannelWin::ReadData( |
char* buffer, |
int buffer_len, |
int* /* bytes_read */) { |
@@ -145,14 +149,14 @@ Channel::ChannelImpl::ReadState Channel::ChannelImpl::ReadData( |
return READ_PENDING; |
} |
-bool Channel::ChannelImpl::WillDispatchInputMessage(Message* msg) { |
+bool ChannelWin::WillDispatchInputMessage(Message* msg) { |
// Make sure we get a hello when client validation is required. |
if (validate_client_) |
return IsHelloMessage(*msg); |
return true; |
} |
-void Channel::ChannelImpl::HandleInternalMessage(const Message& msg) { |
+void ChannelWin::HandleInternalMessage(const Message& msg) { |
DCHECK_EQ(msg.type(), static_cast<unsigned>(Channel::HELLO_MESSAGE_TYPE)); |
// The hello message contains one parameter containing the PID. |
PickleIterator it(msg); |
@@ -177,13 +181,13 @@ void Channel::ChannelImpl::HandleInternalMessage(const Message& msg) { |
listener()->OnChannelConnected(claimed_pid); |
} |
-bool Channel::ChannelImpl::DidEmptyInputBuffers() { |
+bool ChannelWin::DidEmptyInputBuffers() { |
// We don't need to do anything here. |
return true; |
} |
// static |
-const base::string16 Channel::ChannelImpl::PipeName( |
+const base::string16 ChannelWin::PipeName( |
const std::string& channel_id, int32* secret) { |
std::string name("\\\\.\\pipe\\chrome."); |
@@ -201,7 +205,7 @@ const base::string16 Channel::ChannelImpl::PipeName( |
return base::ASCIIToWide(name.append(channel_id)); |
} |
-bool Channel::ChannelImpl::CreatePipe(const IPC::ChannelHandle &channel_handle, |
+bool ChannelWin::CreatePipe(const IPC::ChannelHandle &channel_handle, |
Mode mode) { |
DCHECK_EQ(INVALID_HANDLE_VALUE, pipe_); |
base::string16 pipe_name; |
@@ -286,7 +290,7 @@ bool Channel::ChannelImpl::CreatePipe(const IPC::ChannelHandle &channel_handle, |
return true; |
} |
-bool Channel::ChannelImpl::Connect() { |
+bool ChannelWin::Connect() { |
DLOG_IF(WARNING, thread_check_.get()) << "Connect called more than once"; |
if (!thread_check_.get()) |
@@ -307,7 +311,7 @@ bool Channel::ChannelImpl::Connect() { |
// initialization signal. |
base::MessageLoopForIO::current()->PostTask( |
FROM_HERE, |
- base::Bind(&Channel::ChannelImpl::OnIOCompleted, |
+ base::Bind(&ChannelWin::OnIOCompleted, |
weak_factory_.GetWeakPtr(), |
&input_state_.context, |
0, |
@@ -319,7 +323,7 @@ bool Channel::ChannelImpl::Connect() { |
return true; |
} |
-bool Channel::ChannelImpl::ProcessConnection() { |
+bool ChannelWin::ProcessConnection() { |
DCHECK(thread_check_->CalledOnValidThread()); |
if (input_state_.is_pending) |
input_state_.is_pending = false; |
@@ -356,7 +360,7 @@ bool Channel::ChannelImpl::ProcessConnection() { |
return true; |
} |
-bool Channel::ChannelImpl::ProcessOutgoingMessages( |
+bool ChannelWin::ProcessOutgoingMessages( |
base::MessageLoopForIO::IOContext* context, |
DWORD bytes_written) { |
DCHECK(!waiting_connect_); // Why are we trying to send messages if there's |
@@ -413,7 +417,7 @@ bool Channel::ChannelImpl::ProcessOutgoingMessages( |
return true; |
} |
-void Channel::ChannelImpl::OnIOCompleted( |
+void ChannelWin::OnIOCompleted( |
base::MessageLoopForIO::IOContext* context, |
DWORD bytes_transfered, |
DWORD error) { |
@@ -463,36 +467,18 @@ void Channel::ChannelImpl::OnIOCompleted( |
} |
//------------------------------------------------------------------------------ |
-// Channel's methods simply call through to ChannelImpl. |
-Channel::Channel(const IPC::ChannelHandle &channel_handle, Mode mode, |
- Listener* listener) |
- : channel_impl_(new ChannelImpl(channel_handle, mode, listener)) { |
-} |
- |
-Channel::~Channel() { |
- delete channel_impl_; |
-} |
- |
-bool Channel::Connect() { |
- return channel_impl_->Connect(); |
-} |
- |
-void Channel::Close() { |
- if (channel_impl_) |
- channel_impl_->Close(); |
-} |
+// Channel's methods |
-base::ProcessId Channel::peer_pid() const { |
- return channel_impl_->peer_pid(); |
-} |
- |
-bool Channel::Send(Message* message) { |
- return channel_impl_->Send(message); |
+// static |
+scoped_ptr<Channel> Channel::Create( |
+ const IPC::ChannelHandle &channel_handle, Mode mode, Listener* listener) { |
+ return scoped_ptr<Channel>( |
+ new ChannelWin(channel_handle, mode, listener)); |
} |
// static |
bool Channel::IsNamedServerInitialized(const std::string& channel_id) { |
- return ChannelImpl::IsNamedServerInitialized(channel_id); |
+ return ChannelWin::IsNamedServerInitialized(channel_id); |
} |
// static |