Chromium Code Reviews| Index: ipc/ipc_channel_factory.h |
| diff --git a/ipc/ipc_channel_factory.h b/ipc/ipc_channel_factory.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..0eba2a35cec8d2b7bcf74bff4d59fabaeba5af15 |
| --- /dev/null |
| +++ b/ipc/ipc_channel_factory.h |
| @@ -0,0 +1,55 @@ |
| +// Copyright 2013 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef IPC_IPC_CHANNEL_FACTORY_H_ |
| +#define IPC_IPC_CHANNEL_FACTORY_H_ |
| + |
| +#include "base/files/file_path.h" |
| +#include "base/message_loop.h" |
| +#include "ipc/ipc_channel_handle.h" |
| + |
| +namespace IPC { |
| + |
| +// A ChannelFactory listens on a UNIX domain socket and passes the FDs that get |
| +// created when a client connects to its delegate. It is the delegate's |
|
palmer
2013/03/06 00:59:21
"FDs that get created" — by whom?
Passes the FDs
jeremya
2013/03/06 05:03:18
Updated the comment :)
|
| +// responsibility to create an IPC::Channel from the given FD. |
| +class ChannelFactory : public MessageLoopForIO::Watcher { |
| + public: |
| + class Delegate { |
| + public: |
| + // Called when a client connects to the factory. It is the delegate's |
| + // responsibility to create an IPC::Channel for the handle, or else close |
| + // the file descriptor contained therein. |
| + virtual void OnClientConnected(const ChannelHandle& handle) = 0; |
| + |
| + // Called when an error occurs and the channel is closed. |
| + virtual void OnListenError() = 0; |
| + }; |
| + |
| + ChannelFactory(const base::FilePath& path, Delegate* delegate); |
| + |
| + virtual ~ChannelFactory(); |
| + |
| + // Call this to start listening on the socket. |
| + bool Listen(); |
| + |
| + // Close and unlink the socket, and stop accepting connections. |
| + void Close(); |
| + |
| + private: |
| + bool CreatePipe(); |
|
Mark Mentovai
2013/03/05 20:08:03
This “pipe” business is a little bit misleading. I
jeremya
2013/03/06 05:03:18
Done. s/pipe/fd/g, s/CreatePipe/CreateSocket
|
| + virtual void OnFileCanReadWithoutBlocking(int fd) OVERRIDE; |
| + virtual void OnFileCanWriteWithoutBlocking(int fd) OVERRIDE {} |
|
Mark Mentovai
2013/03/05 20:08:03
Inlining this (empty) function here seems like mor
jeremya
2013/03/06 05:03:18
Done.
|
| + |
| + MessageLoopForIO::FileDescriptorWatcher server_listen_connection_watcher_; |
| + base::FilePath path_; |
| + Delegate* delegate_; |
| + int listen_pipe_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(ChannelFactory); |
| +}; |
| + |
| +} |
|
Mark Mentovai
2013/03/05 20:08:03
} // namespace IPC
jeremya
2013/03/06 05:03:18
Done.
|
| + |
| +#endif // IPC_IPC_CHANNEL_FACTORY_H_ |