Media/WebRTC/WebRTCE10S/NetworkProxyInterface: Difference between revisions
(4 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
==== Address Enumeration ==== | ==== Address Enumeration ==== | ||
This should be an RPC-style call. | |||
nsresult EnumerateInterfaces(std::vector<Interface>* interfaces); | |||
Returns a sequence of: | |||
struct Interface { | |||
string name; | string name; | ||
PRNetAddr address; | PRNetAddr address; | ||
Line 13: | Line 15: | ||
enum InterfaceType { Local, Wired, WiFi, Mobile, Virtual }; | enum InterfaceType { Local, Wired, WiFi, Mobile, Virtual }; | ||
==== Socket Management ==== | |||
The following interfaces should be synchronous/RPC-style. | |||
To create a socket: | |||
nsresult SocketCreate(PRNetAddr* requested_address, SocketHandle* handle); | |||
You pass in a PRNetAddr with an IP address but an empty (0) port. | |||
On success, the port is filled in, and the handle is valid. | |||
To destroy a socket: | |||
nsresult SocketDestroy(SocketHandle handle); | |||
This effectively closes it. | |||
==== Packet Transmisson and Reception ==== | ==== Packet Transmisson and Reception ==== | ||
From content to chrome, we do: | |||
SendTo(SocketHandle handle, | |||
const void *buf, | |||
PRInt32 amount, | |||
PRIntn flags, | |||
PRNetAddr remoteAddress); | |||
This call causes a packet to be sent to remoteAddress if (if possible);. | |||
These values correspond to those in PR_SendTo (https://developer.mozilla.org/en-US/docs/PR_SendTo). | |||
Note that this is asynchronous so there is no error return. | |||
From chrome to content: | |||
PacketReceived(SocketHandle handle, | |||
const void *buf, | |||
PRInt32 amount, | |||
PRNetAddr remoteAddress); | |||
This message indicates that a packet has been received from some remote | |||
side. Handle is the socket that the packet came in on. buf and amount contain | |||
the packet. remoteAddress is the source address. | |||
Finally: | |||
Error(SocketHandle) | |||
This message indicates that something went wrong on the socket in | |||
question and it is likely that you will no longer be able to send/receive. |
Latest revision as of 10:11, 24 April 2013
Network Proxy Interfaces for WebRTC E10S Split
Address Enumeration
This should be an RPC-style call.
nsresult EnumerateInterfaces(std::vector<Interface>* interfaces);
Returns a sequence of:
struct Interface { string name; PRNetAddr address; InterfaceType type; } enum InterfaceType { Local, Wired, WiFi, Mobile, Virtual };
Socket Management
The following interfaces should be synchronous/RPC-style.
To create a socket:
nsresult SocketCreate(PRNetAddr* requested_address, SocketHandle* handle);
You pass in a PRNetAddr with an IP address but an empty (0) port. On success, the port is filled in, and the handle is valid.
To destroy a socket:
nsresult SocketDestroy(SocketHandle handle);
This effectively closes it.
Packet Transmisson and Reception
From content to chrome, we do:
SendTo(SocketHandle handle, const void *buf, PRInt32 amount, PRIntn flags, PRNetAddr remoteAddress);
This call causes a packet to be sent to remoteAddress if (if possible);. These values correspond to those in PR_SendTo (https://developer.mozilla.org/en-US/docs/PR_SendTo). Note that this is asynchronous so there is no error return.
From chrome to content:
PacketReceived(SocketHandle handle, const void *buf, PRInt32 amount, PRNetAddr remoteAddress);
This message indicates that a packet has been received from some remote side. Handle is the socket that the packet came in on. buf and amount contain the packet. remoteAddress is the source address.
Finally:
Error(SocketHandle)
This message indicates that something went wrong on the socket in question and it is likely that you will no longer be able to send/receive.