Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(578)

Unified Diff: mojo/services/public/interfaces/network/tcp_socket.mojom

Issue 613683006: Add TCP socket mojo interfaces (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: BSD like Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/services/public/interfaces/network/BUILD.gn ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/services/public/interfaces/network/tcp_socket.mojom
diff --git a/mojo/services/public/interfaces/network/tcp_socket.mojom b/mojo/services/public/interfaces/network/tcp_socket.mojom
new file mode 100644
index 0000000000000000000000000000000000000000..1c0cc1561ca4d861292d6c74087a2165631c54a9
--- /dev/null
+++ b/mojo/services/public/interfaces/network/tcp_socket.mojom
@@ -0,0 +1,80 @@
+// Copyright 2014 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.
+
+import "mojo/services/public/interfaces/network/net_address.mojom"
+import "mojo/services/public/interfaces/network/network_error.mojom"
+
+module mojo {
+
+struct TCPSocketInfo {
+ NetAddress local_address;
+ NetAddress remote_address;
+};
+
+// Represents a TCP socket. A socket can represent either a connection to a
viettrungluu 2014/09/30 19:22:15 Why is it important to combine these two cases int
+// remote host, or a local server socket waiting for incoming connections.
+//
+// For client connections:
+// - Connect(), providing a pair of streams to use for data transfer.
+// - Read and write from the streams as desired.
+// - Close().
+//
+// For server connections:
+// - Bind() to allocate a port.
+// - For as long as you want to accept incoming connections:
+// 1. Listen() to wait for an incoming connection.
yzshen1 2014/09/30 18:21:39 This is different from what Pepper does. Is it int
brettw 2014/09/30 19:17:48 You're right, I misunderstood what Pepper/BSD did.
+// 2. Accept() to initiate a connection once one is available.
+// - Close().
+interface TCPSocket {
+ // Binds this connection to a local port. The TCPSocket must not be bound,
+ // listening, or connected.
+ //
+ // This function is required to initialize a server socket for using Listen(),
+ // but is optional when using Connect() to initiate a client connection.
+ Bind(NetAddress addr) => (NetworkError result);
yzshen1 2014/09/30 18:21:40 For server socket, it seems we don't have a way to
brettw 2014/09/30 19:17:47 Added info.
+
+ // Starts listening on this socket for incoming connection requests. The
+ // socket must be bound and not connected.
+ //
+ // When an incoming connection is detected, the callback will report success
+ // and you can call Accept() to accept the connection. If a program then
+ // wants to listen for more than one incoming connection, it would typically
+ // call Listen() again to wait for more connections.
+ //
+ // The backlog is a hint indicating the number of incoming connections that
+ // can be queued up at one time waiting for Accept(). This queuing will
+ // happen when connections are incoming faster than Accept() can be called.
+ Listen(int32 backlog) => (NetworkError result);
+
+ // Accepts a connection. The socket must be listening.
+ //
+ // This function is called to accept an incoming connection after Listen()
+ // indicates that one is available. The caller provides the streams that will
+ // be used to send and receive data on the connection.
+ //
+ // On success, the callback will be provided with the new socket that
+ // represents the connection. It will already be in a connected state and the
+ // data streams will be ready to use.
+ Accept(handle<data_pipe_consumer> send_stream,
+ handle<data_pipe_producer> receive_stream) =>
+ (NetworkError result, TCPSocket socket, TCPSocketInfo info);
yzshen1 2014/09/30 18:21:39 You might want to append '?' to the type TCPSocket
brettw 2014/09/30 19:17:48 Good idea, I added this everywhere.
+
+ // Connects the socket to the given address. The socket must not be listening
+ // or previously connected. Binding the socket beforehand is optional.
+ Connect(NetAddress addr,
+ handle<data_pipe_consumer> send_stream,
+ handle<data_pipe_producer> receive_stream) =>
+ (NetworkError result, TCPSocketInfo info);
+
+ // Closes the connection. If Close() is not called, the connection will be
yzshen1 2014/09/30 18:21:39 Maybe we could revise the comment to also cover th
brettw 2014/09/30 19:17:48 Done
+ // implicitly closes when the TCPSocket has been deleted.
+ Close();
+
+ // Controls whether small writes are coalesced to make TCP segments, and
+ // instead delivers data immediately. The default value is true (coalescing
+ // enabled).
+ SetCoaleseWrites(bool coalesce);
+};
+
+}
« no previous file with comments | « mojo/services/public/interfaces/network/BUILD.gn ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698