diff options
Diffstat (limited to 'dom/network/interfaces/nsIUDPSocketChild.idl')
-rw-r--r-- | dom/network/interfaces/nsIUDPSocketChild.idl | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/dom/network/interfaces/nsIUDPSocketChild.idl b/dom/network/interfaces/nsIUDPSocketChild.idl new file mode 100644 index 000000000..3a07fae66 --- /dev/null +++ b/dom/network/interfaces/nsIUDPSocketChild.idl @@ -0,0 +1,78 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsISupports.idl" +#include "nsINetAddr.idl" + +interface nsIUDPSocketInternal; +interface nsIInputStream; +interface nsIPrincipal; + +%{ C++ +namespace mozilla { +namespace net { +union NetAddr; +} +} +%} +native NetAddr(mozilla::net::NetAddr); +[ptr] native NetAddrPtr(mozilla::net::NetAddr); + +[scriptable, uuid(1e6ad73b-6c05-4d78-9a88-2d357b88f58b)] +interface nsIUDPSocketChild : nsISupports +{ + readonly attribute unsigned short localPort; + readonly attribute AUTF8String localAddress; + attribute AUTF8String filterName; + + // Allow hosting this over PBackground instead of PNecko + [noscript] void setBackgroundSpinsEvents(); + + // Tell the chrome process to bind the UDP socket to a given local host and port + void bind(in nsIUDPSocketInternal socket, in nsIPrincipal principal, + in AUTF8String host, in unsigned short port, + in bool addressReuse, in bool loopback, in uint32_t recvBufferSize, + in uint32_t sendBufferSize); + + // Tell the chrome process to connect the UDP socket to a given remote host and port + void connect(in nsIUDPSocketInternal socket, in AUTF8String host, in unsigned short port); + + // Tell the chrome process to perform equivalent operations to all following methods + void send(in AUTF8String host, in unsigned short port, + [const, array, size_is(byteLength)] in uint8_t bytes, + in unsigned long byteLength); + // Send without DNS query + void sendWithAddr(in nsINetAddr addr, + [const, array, size_is(byteLength)] in uint8_t bytes, + in unsigned long byteLength); + [noscript] void sendWithAddress([const] in NetAddrPtr addr, + [const, array, size_is(byteLength)] in uint8_t bytes, + in unsigned long byteLength); + // Send input stream. This must be a buffered stream implementation. + void sendBinaryStream(in AUTF8String host, in unsigned short port, in nsIInputStream stream); + + void close(); + void joinMulticast(in AUTF8String multicastAddress, in AUTF8String iface); + void leaveMulticast(in AUTF8String multicastAddress, in AUTF8String iface); +}; + +/* + * Internal interface for callback from chrome process + */ +[scriptable, uuid(613dd3ad-598b-4da9-ad63-bbda50c20098)] +interface nsIUDPSocketInternal : nsISupports +{ + // callback while socket is opened. localPort and localAddress is ready until this time. + void callListenerOpened(); + // callback while socket is connected. + void callListenerConnected(); + // callback while socket is closed. + void callListenerClosed(); + // callback while incoming packet is received. + void callListenerReceivedData(in AUTF8String host, in unsigned short port, + [const, array, size_is(dataLength)] in uint8_t data, + in unsigned long dataLength); + // callback while any error happened. + void callListenerError(in AUTF8String message, in AUTF8String filename, in uint32_t lineNumber); +}; |