12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /* 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);
- };
|