diff options
Diffstat (limited to 'ppapi/c/dev/ppb_transport_dev.h')
-rw-r--r-- | ppapi/c/dev/ppb_transport_dev.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/ppapi/c/dev/ppb_transport_dev.h b/ppapi/c/dev/ppb_transport_dev.h new file mode 100644 index 0000000..821557d --- /dev/null +++ b/ppapi/c/dev/ppb_transport_dev.h @@ -0,0 +1,70 @@ +// Copyright (c) 2010 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 PPAPI_C_PPB_TRANSPORT_DEV_H_ +#define PPAPI_C_PPB_TRANSPORT_DEV_H_ + +#include "ppapi/c/pp_completion_callback.h" +#include "ppapi/c/pp_module.h" +#include "ppapi/c/pp_instance.h" +#include "ppapi/c/pp_resource.h" +#include "ppapi/c/pp_stdint.h" +#include "ppapi/c/pp_var.h" + +#define PPB_TRANSPORT_DEV_INTERFACE "PPB_Transport;0.1" + +struct PPB_Transport_Dev { + // Creates a new transport object with the specified name + // using the specified protocol. + PP_Resource (*CreateTransport)(PP_Module module, + const char* name, + const char* proto); + + // Returns whether or not resource is a Transport + bool (*IsTransport)(PP_Resource resource); + + // Returns whether the transport is currently writable + // (i.e. can send data to the remote peer) + bool (*IsWritable)(PP_Resource transport); + // TODO(juberti): other getters/setters + // connect state + // connect type, protocol + // RTT + + // Establishes a connection to the remote peer. + // Returns PP_ERROR_WOULDBLOCK and notifies on |cb| + // when connectivity is established (or timeout occurs). + int32_t (*Connect)(PP_Resource transport, + PP_CompletionCallback cb); + + // Obtains another ICE candidate address to be provided + // to the remote peer. Returns PP_ERROR_WOULDBLOCK + // if there are no more addresses to be sent. + int32_t (*GetNextAddress)(PP_Resource transport, + PP_Var* address, + PP_CompletionCallback cb); + // Provides an ICE candidate address that was received + // from the remote peer. + int32_t (*ReceiveRemoteAddress)(PP_Resource transport, + PP_Var address); + + // Like recv(), receives data. Returns PP_ERROR_WOULDBLOCK + // if there is currently no data to receive. + int32_t (*Recv)(PP_Resource transport, + void* data, + uint32_t len, + PP_CompletionCallback cb); + // Like send(), sends data. Returns PP_ERROR_WOULDBLOCK + // if the socket is currently flow-controlled. + int32_t (*Send)(PP_Resource transport, + const void* data, + uint32_t len, + PP_CompletionCallback cb); + + // Disconnects from the remote peer. + int32_t (*Close)(PP_Resource transport); +}; + +#endif // PPAPI_C_PPB_TRANSPORT_DEV_H_ + |