123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- package eval.luv;
- import haxe.ds.Option;
- import eval.luv.SockAddr;
- enum abstract UdpMembership(Int) {
- var LEAVE_GROUP = 0;
- var JOIN_GROUP = 1;
- }
- enum abstract RecvFlag(Int) {
- var PARTIAL = 0;
- var MMSG_CHUNK = 1;
- var MMSG_FREE = 2;
- }
- /**
- UDP sockets.
- @see https://aantron.github.io/luv/luv/Luv/UDP
- **/
- @:using(eval.luv.Handle)
- @:coreType abstract Udp to Handle to Handle.SocketHandle {
- /**
- Allocates and initializes a UDP socket.
- The handle should be cleaned up with `eval.luv.Handle.close` when no longer needed.
- **/
- static public function init(loop:Loop, ?domain:AddressFamily, recvmmsg:Bool = false):Result<Udp>;
- /**
- Assigns an address to the UDP socket.
- **/
- public function bind(addr:SockAddr, ipv6Only:Bool = false, reuseAddr:Bool = false):Result<Result.NoData>;
- /**
- Assigns a peer address to the socket.
- **/
- public function connect(addr:SockAddr):Result<ConnectedUdp>;
- /**
- Retrieves the address assigned to the UDP socket.
- **/
- public function getSockName():Result<SockAddr>;
- /**
- Sets multicast group membership.
- **/
- public function setMembership(group:String, interfaceName:String, membership:UdpMembership):Result<Result.NoData>;
- /**
- Sets source-specific multicast group membership.
- **/
- public function setSourceMembership(group:String, interfaceName:String, source:String, membership:UdpMembership):Result<Result.NoData>;
- /**
- Set multicast loopback.
- **/
- public function setMulticastLoop(value:Bool):Result<Result.NoData>;
- /**
- Set multicast TTL.
- **/
- public function setMulticastTtl(value:Int):Result<Result.NoData>;
- /**
- Sets the interface to be used for multicast.
- **/
- public function setMulticastInterface(value:Int):Result<Result.NoData>;
- /**
- Sets broadcast.
- **/
- public function setBroadcast(value:Bool):Result<Result.NoData>;
- /**
- Sets the TTL.
- **/
- public function setTtl(value:Int):Result<Result.NoData>;
- /**
- Sends a datagram.
- For connected UDP sockets, see `eval.luv.UDP.Connected.send`.
- **/
- public function send(data:Array<Buffer>, addr:SockAddr, callback:(result:Result<Result.NoData>)->Void):Void;
- /**
- Like `eval.luv.UDP.send`, but only attempts to send the datagram immediately.
- **/
- public function trySend(data:Array<Buffer>, addr:SockAddr):Result<Result.NoData>;
- /**
- Calls `callback` whenever a datagram is received on the UDP socket.
- @see https://aantron.github.io/luv/luv/Luv/UDP/index.html#val-recv_start
- **/
- public function recvStart(callback:(result:Result<{data:Buffer, addr:Option<SockAddr>, flags:Array<RecvFlag>}>, ?allocate:(size:Int)->Buffer)->Void):Void;
- /**
- Stops the callback provided to `eval.luv.UDP.recvStart`.
- **/
- public function recvStop():Result<Result.NoData>;
- /**
- Evaluates to true if and only if the UDP was created with `recvmmsg = true`
- and the platform supports recvmmsg(2).
- **/
- public function usingRecvmmsg():Bool;
- /**
- Number of bytes queued for sending. This field strictly shows how much
- information is currently queued.
- **/
- public function getSendQueueSize():Int;
- /**
- Number of send requests currently in the queue awaiting to be processed.
- **/
- public function getSendQueueCount():Int;
- }
|