Index: ipc/ipc_channel.h |
diff --git a/ipc/ipc_channel.h b/ipc/ipc_channel.h |
index 4426e5d5c7b38aa75365b4740694d3ed10f9ce13..be8f83ce9995575037b5b43090e88e308712d1de 100644 |
--- a/ipc/ipc_channel.h |
+++ b/ipc/ipc_channel.h |
@@ -55,21 +55,15 @@ class IPC_EXPORT Channel : public Sender { |
}; |
// Some Standard Modes |
+ // TODO(morrita): These are under deprecation work. You should use Create*() |
+ // functions instead. |
enum Mode { |
MODE_NONE = MODE_NO_FLAG, |
MODE_SERVER = MODE_SERVER_FLAG, |
MODE_CLIENT = MODE_CLIENT_FLAG, |
- // Channels on Windows are named by default and accessible from other |
- // processes. On POSIX channels are anonymous by default and not accessible |
- // from other processes. Named channels work via named unix domain sockets. |
- // On Windows MODE_NAMED_SERVER is equivalent to MODE_SERVER and |
- // MODE_NAMED_CLIENT is equivalent to MODE_CLIENT. |
MODE_NAMED_SERVER = MODE_SERVER_FLAG | MODE_NAMED_FLAG, |
MODE_NAMED_CLIENT = MODE_CLIENT_FLAG | MODE_NAMED_FLAG, |
#if defined(OS_POSIX) |
- // An "open" named server accepts connections from ANY client. |
- // The caller must then implement their own access-control based on the |
- // client process' user Id. |
MODE_OPEN_NAMED_SERVER = MODE_OPEN_ACCESS_FLAG | MODE_SERVER_FLAG | |
MODE_NAMED_FLAG |
#endif |
@@ -106,15 +100,47 @@ class IPC_EXPORT Channel : public Sender { |
// the file descriptor in the channel handle is != -1, the channel takes |
// ownership of the file descriptor and will close it appropriately, otherwise |
// it will create a new descriptor internally. |
- // |mode| specifies whether this Channel is to operate in server mode or |
- // client mode. In server mode, the Channel is responsible for setting up the |
- // IPC object, whereas in client mode, the Channel merely connects to the |
- // already established IPC object. |
// |listener| receives a callback on the current thread for each newly |
// received message. |
// |
- Channel(const IPC::ChannelHandle &channel_handle, Mode mode, |
- Listener* listener); |
+ // There are four type of modes how channels operate: |
+ // |
+ // - Server and named server: In these modes, the Channel is |
+ // responsible for settingb up the IPC object |
+ // - An "open" named server: It accepts connections from ANY client. |
+ // The caller must then implement their own access-control based on the |
+ // client process' user Id. |
+ // - Client and named client: In these mode, the Channel merely |
+ // connects to the already established IPC object. |
+ // |
+ // Each mode has its own Create*() API to create the Channel object. |
+ // |
+ // TODO(morrita): Replace CreateByModeForProxy() with one of above Create*(). |
+ // |
+ static scoped_ptr<Channel> CreateByModeForProxy( |
+ const IPC::ChannelHandle &channel_handle, Mode mode,Listener* listener); |
+ static scoped_ptr<Channel> CreateClient( |
+ const IPC::ChannelHandle &channel_handle, Listener* listener); |
+ |
+ // Channels on Windows are named by default and accessible from other |
+ // processes. On POSIX channels are anonymous by default and not accessible |
+ // from other processes. Named channels work via named unix domain sockets. |
+ // On Windows MODE_NAMED_SERVER is equivalent to MODE_SERVER and |
+ // MODE_NAMED_CLIENT is equivalent to MODE_CLIENT. |
+ static scoped_ptr<Channel> CreateNamedServer( |
+ const IPC::ChannelHandle &channel_handle, Listener* listener); |
+ static scoped_ptr<Channel> CreateNamedClient( |
+ const IPC::ChannelHandle &channel_handle, Listener* listener); |
+#if defined(OS_POSIX) |
+ // An "open" named server accepts connections from ANY client. |
+ // The caller must then implement their own access-control based on the |
+ // client process' user Id. |
+ static scoped_ptr<Channel> CreateOpenNamedServer( |
+ const IPC::ChannelHandle &channel_handle, Listener* listener); |
+#endif |
+ static scoped_ptr<Channel> CreateServer( |
+ const IPC::ChannelHandle &channel_handle, Listener* listener); |
+ |
virtual ~Channel(); |
@@ -220,6 +246,9 @@ class IPC_EXPORT Channel : public Sender { |
Channel() : channel_impl_(0) { } |
private: |
+ Channel(const IPC::ChannelHandle &channel_handle, Mode mode, |
+ Listener* listener); |
+ |
// PIMPL to which all channel calls are delegated. |
class ChannelImpl; |
ChannelImpl *channel_impl_; |