blob: 8b0b22829b76f2af5d54ebd742cc961fa076fc02 [file] [log] [blame]
// 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.
[DartPackage="mojo_services"]
module mojo;
import "mojo/public/interfaces/network/network_error.mojom";
import "network/public/interfaces/net_address.mojom";
import "network/public/interfaces/tcp_connected_socket.mojom";
import "network/public/interfaces/tcp_server_socket.mojom";
// Represents a TCP socket that is bound to a local address and port, but
// is not yet in a listening or connected state.
//
// A bound socket can be used to create a server socket listening on the
// local address, or it can be used to create a client socket by connecting to
// a remote host. Once StartListening or Connect is called on the bound socket,
// ownership of the underlying socket will be transferred to the connected or
// server socket, and the bound socket may be closed.
interface TCPBoundSocket {
// Puts the socket into server mode, awaiting incoming connections.
//
// Once this function is called, neither StartListening nor Connect can be
// used on this socket again.
StartListening(TCPServerSocket& server) => (NetworkError result);
// Puts this socket into client mode by connecting to a remote host. If you
// do not care about the local address or port, you can call
// NetworkService.CreateTCPConnectedSocket to connect directly and skip the
// "bound" state.
//
// Once this function is called, neither StartListening nor Connect can be
// used on this socket again.
Connect(NetAddress remote_address,
handle<data_pipe_consumer> send_stream,
handle<data_pipe_producer> receive_stream,
TCPConnectedSocket& client_socket)
=> (NetworkError result);
};