blob: 24d552ea9edd8d41b523f8c43edda6b96e679dd1 [file] [log] [blame]
/* Copyright (c) 2012 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.
*/
/**
* This file defines the <code>PPB_Transport_Dev</code> interface.
*/
label Chrome {
M14 = 0.7
};
[assert_size(4)]
enum PP_TransportType {
PP_TRANSPORTTYPE_DATAGRAM = 0,
PP_TRANSPORTTYPE_STREAM = 1
};
[assert_size(4)]
enum PP_TransportProperty {
/**
* STUN server address and port, e.g "stun.example.com:19302".
*/
PP_TRANSPORTPROPERTY_STUN_SERVER = 0,
/**
* Relay server address and port, e.g. "relay.example.com:12344".
*/
PP_TRANSPORTPROPERTY_RELAY_SERVER = 1,
/**
* Username for the relay server.
*/
PP_TRANSPORTPROPERTY_RELAY_USERNAME = 2,
/**
* Password for the relay server.
*/
PP_TRANSPORTPROPERTY_RELAY_PASSWORD = 3,
/**
* Type of Relay server. Must be one of the PP_TransportRelayMode values. By
* default is set to PP_TRANSPORTRELAYMODE_TURN.
*/
PP_TRANSPORTPROPERTY_RELAY_MODE = 4,
/**
* TCP receive window in bytes. Takes effect only for PseudoTCP connections.
*/
PP_TRANSPORTPROPERTY_TCP_RECEIVE_WINDOW = 5,
/**
* TCP send window in bytes. Takes effect only for PseudoTCP connections.
*/
PP_TRANSPORTPROPERTY_TCP_SEND_WINDOW = 6,
/**
* Boolean value that disables Neagle's algorithm when set to true. When
* Neagle's algorithm is disabled, all outgoing packets are sent as soon as
* possible. When set to false (by default) data may be buffered until there
* is a sufficient amount to send.
*/
PP_TRANSPORTPROPERTY_TCP_NO_DELAY = 7,
/**
* Delay for ACK packets in milliseconds. By default set to 100ms.
*/
PP_TRANSPORTPROPERTY_TCP_ACK_DELAY = 8,
/**
* Boolean value that disables TCP-based transports when set to true. By
* default set to false.
*/
PP_TRANSPORTPROPERTY_DISABLE_TCP_TRANSPORT = 9
};
[assert_size(4)]
enum PP_TransportRelayMode {
/**
* RFC5766 compliant relay server.
*/
PP_TRANSPORTRELAYMODE_TURN = 0,
/**
* Legacy Google relay server.
*/
PP_TRANSPORTRELAYMODE_GOOGLE = 1
};
/**
* The transport interface provides peer-to-peer communication.
*
* TODO(juberti): other getters/setters
* connect state
* connect type, protocol
* RTT
*/
interface PPB_Transport_Dev {
/**
* Creates a new transport object with the specified name using the
* specified protocol.
*/
PP_Resource CreateTransport(
[in] PP_Instance instance,
[in] str_t name,
[in] PP_TransportType type);
/**
* Returns PP_TRUE if resource is a Transport, PP_FALSE otherwise.
*/
PP_Bool IsTransport(
[in] PP_Resource resource);
/**
* Returns PP_TRUE if the transport is currently writable (i.e. can
* send data to the remote peer), PP_FALSE otherwise.
*/
PP_Bool IsWritable(
[in] PP_Resource transport);
/**
* Sets various configuration properties of the transport.
*/
int32_t SetProperty(
[in] PP_Resource transport,
[in] PP_TransportProperty property,
[in] PP_Var value);
/**
* Establishes a connection to the remote peer. Returns
* PP_OK_COMPLETIONPENDING and notifies on |cb| when connectivity is
* established (or timeout occurs).
*/
int32_t Connect(
[in] PP_Resource transport,
[in] PP_CompletionCallback cb);
/**
* Obtains another ICE candidate address to be provided to the
* remote peer. Returns PP_OK_COMPLETIONPENDING if there are no more
* addresses to be sent. After the callback is called
* GetNextAddress() must be called again to get the address.
*/
int32_t GetNextAddress(
[in] PP_Resource transport,
[out] PP_Var address,
[in] PP_CompletionCallback cb);
/**
* Provides an ICE candidate address that was received from the remote peer.
*/
int32_t ReceiveRemoteAddress(
[in] PP_Resource transport,
[in] PP_Var address);
/**
* Like recv(), receives data. Returns PP_OK_COMPLETIONPENDING if there is
* currently no data to receive. In that case, the |data| pointer should
* remain valid until the callback is called.
*/
int32_t Recv(
[in] PP_Resource transport,
[out] mem_t data,
[in] uint32_t len,
[in] PP_CompletionCallback cb);
/**
* Like send(), sends data. Returns PP_OK_COMPLETIONPENDING if the socket is
* currently flow-controlled. In that case, the |data| pointer should remain
* valid until the callback is called.
*/
int32_t Send(
[in] PP_Resource transport,
[in] mem_t data,
[in] uint32_t len,
[in] PP_CompletionCallback cb);
/**
* Disconnects from the remote peer.
*/
int32_t Close(
[in] PP_Resource transport);
};