Index: ipc/ipc_channel.h |
diff --git a/ipc/ipc_channel.h b/ipc/ipc_channel.h |
index be8f83ce9995575037b5b43090e88e308712d1de..a2b813b48b6716e85633dcfdd6ae7bcc5bf556d0 100644 |
--- a/ipc/ipc_channel.h |
+++ b/ipc/ipc_channel.h |
@@ -117,8 +117,9 @@ class IPC_EXPORT Channel : public Sender { |
// |
// TODO(morrita): Replace CreateByModeForProxy() with one of above Create*(). |
// |
- static scoped_ptr<Channel> CreateByModeForProxy( |
+ static scoped_ptr<Channel> Create( |
const IPC::ChannelHandle &channel_handle, Mode mode,Listener* listener); |
+ |
static scoped_ptr<Channel> CreateClient( |
const IPC::ChannelHandle &channel_handle, Listener* listener); |
@@ -149,14 +150,14 @@ class IPC_EXPORT Channel : public Sender { |
// connect to a pre-existing pipe. Note, calling Connect() |
// will not block the calling thread and may complete |
// asynchronously. |
- bool Connect() WARN_UNUSED_RESULT; |
+ virtual bool Connect() WARN_UNUSED_RESULT = 0; |
// Close this Channel explicitly. May be called multiple times. |
// On POSIX calling close on an IPC channel that listens for connections will |
// cause it to close any accepted connections, and it will stop listening for |
// new connections. If you just want to close the currently accepted |
// connection and listen for new ones, use ResetToAcceptingConnectionState. |
- void Close(); |
+ virtual void Close() = 0; |
// Get the process ID for the connected peer. |
// |
@@ -167,25 +168,25 @@ class IPC_EXPORT Channel : public Sender { |
// in response to a message from the remote side (which guarantees that it's |
// been connected), or you wait for the "connected" notification on the |
// listener. |
- base::ProcessId peer_pid() const; |
+ virtual base::ProcessId GetPeerPID() const = 0; |
// Send a message over the Channel to the listener on the other end. |
// |
// |message| must be allocated using operator new. This object will be |
// deleted once the contents of the Message have been sent. |
- virtual bool Send(Message* message) OVERRIDE; |
+ virtual bool Send(Message* message) = 0; |
-#if defined(OS_POSIX) |
+#if defined(OS_POSIX) && !defined(OS_NACL) |
// On POSIX an IPC::Channel wraps a socketpair(), this method returns the |
// FD # for the client end of the socket. |
// This method may only be called on the server side of a channel. |
// This method can be called on any thread. |
- int GetClientFileDescriptor() const; |
+ virtual int GetClientFileDescriptor() const = 0; |
// Same as GetClientFileDescriptor, but transfers the ownership of the |
// file descriptor to the caller. |
// This method can be called on any thread. |
- int TakeClientFileDescriptor(); |
+ virtual int TakeClientFileDescriptor() = 0; |
// On POSIX an IPC::Channel can either wrap an established socket, or it |
// can wrap a socket that is listening for connections. Currently an |
@@ -193,19 +194,19 @@ class IPC_EXPORT Channel : public Sender { |
// at a time. |
// Returns true if the channel supports listening for connections. |
- bool AcceptsConnections() const; |
+ virtual bool AcceptsConnections() const = 0; |
// Returns true if the channel supports listening for connections and is |
// currently connected. |
- bool HasAcceptedConnection() const; |
+ virtual bool HasAcceptedConnection() const = 0; |
// Returns true if the peer process' effective user id can be determined, in |
// which case the supplied peer_euid is updated with it. |
- bool GetPeerEuid(uid_t* peer_euid) const; |
+ virtual bool GetPeerEuid(uid_t* peer_euid) const = 0; |
// Closes any currently connected socket, and returns to a listening state |
// for more connections. |
- void ResetToAcceptingConnectionState(); |
+ virtual void ResetToAcceptingConnectionState() = 0; |
#endif // defined(OS_POSIX) && !defined(OS_NACL) |
// Returns true if a named server channel is initialized on the given channel |
@@ -238,20 +239,6 @@ class IPC_EXPORT Channel : public Sender { |
static void NotifyProcessForkedForTesting(); |
#endif |
- protected: |
- // Used in Chrome by the TestSink to provide a dummy channel implementation |
- // for testing. TestSink overrides the "interesting" functions in Channel so |
- // no actual implementation is needed. This will cause un-overridden calls to |
- // segfault. Do not use outside of test code! |
- 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_; |
}; |
#if defined(OS_POSIX) |