summaryrefslogtreecommitdiffstats
path: root/ppapi/c/dev/ppb_transport_dev.h
diff options
context:
space:
mode:
Diffstat (limited to 'ppapi/c/dev/ppb_transport_dev.h')
-rw-r--r--ppapi/c/dev/ppb_transport_dev.h70
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_
+