| Index: chrome/common/ipc_channel.h
|
| diff --git a/chrome/common/ipc_channel.h b/chrome/common/ipc_channel.h
|
| index 47091669d92832858baa795afb20d071895f4ad7..ac234b8e96eca1a4716ad126146b4ca5c1049d32 100644
|
| --- a/chrome/common/ipc_channel.h
|
| +++ b/chrome/common/ipc_channel.h
|
| @@ -14,9 +14,11 @@ namespace IPC {
|
|
|
| //------------------------------------------------------------------------------
|
|
|
| -class Channel : public Message::Sender
|
| +class Channel : public Message::Sender,
|
| #if defined(OS_WIN)
|
| - , public MessageLoopForIO::IOHandler
|
| + public MessageLoopForIO::IOHandler
|
| +#elif defined(OS_POSIX)
|
| + public MessageLoopForIO::FileWatcher
|
| #endif
|
| {
|
| // Security tests need access to the pipe handle.
|
| @@ -90,9 +92,9 @@ class Channel : public Message::Sender
|
| virtual bool Send(Message* message);
|
|
|
| private:
|
| -#if defined(OS_WIN)
|
| const std::wstring PipeName(const std::wstring& channel_id) const;
|
| bool CreatePipe(const std::wstring& channel_id, Mode mode);
|
| +#if defined(OS_WIN)
|
| bool ProcessConnection();
|
| bool ProcessIncomingMessages(MessageLoopForIO::IOContext* context,
|
| DWORD bytes_read);
|
| @@ -102,14 +104,11 @@ class Channel : public Message::Sender
|
| // MessageLoop::IOHandler implementation.
|
| virtual void OnIOCompleted(MessageLoopForIO::IOContext* context,
|
| DWORD bytes_transfered, DWORD error);
|
| -#endif
|
| -
|
| private:
|
| enum {
|
| BUF_SIZE = 4096
|
| };
|
|
|
| -#if defined(OS_WIN)
|
| struct State {
|
| explicit State(Channel* channel);
|
| ~State();
|
| @@ -121,7 +120,36 @@ class Channel : public Message::Sender
|
| State output_state_;
|
|
|
| HANDLE pipe_;
|
| -#endif
|
| +#elif defined(OS_POSIX)
|
| + bool ProcessIncomingMessages();
|
| + bool ProcessOutgoingMessages();
|
| +
|
| + void OnFileReadReady(int fd);
|
| + void OnFileWriteReady(int fd);
|
| +
|
| +
|
| + Mode mode_;
|
| +
|
| + // TODO(playmobil): do we need to change BUF_SIZE ?
|
| + private:
|
| + enum {
|
| + BUF_SIZE = 4096
|
| + };
|
| +
|
| + // PIMPL to encapsulate libevent structures.
|
| + struct EventHolder;
|
| + EventHolder *server_listen_connection_event_;
|
| + EventHolder *read_event_;
|
| + EventHolder *write_event_;
|
| +
|
| + // If sending a message blocks then we use this variable
|
| + // to keep track of where we are.
|
| + size_t message_send_bytes_written_;
|
| +
|
| + int server_listen_pipe_;
|
| + int pipe_;
|
| + std::string pipe_name_;
|
| +#endif // defined(OS_POSIX)
|
| Listener* listener_;
|
|
|
| // Messages to be sent are queued here.
|
|
|