1 module libwasm.bindings.UDPSocket; 2 3 import libwasm.types; 4 5 import memutils.ct: tuple; 6 import libwasm.bindings.Blob; 7 import libwasm.bindings.EventHandler; 8 import libwasm.bindings.EventTarget; 9 import libwasm.bindings.SocketCommon; 10 11 @safe: 12 nothrow: 13 14 struct UDPOptions { 15 nothrow: 16 JsHandle handle; 17 alias handle this; 18 this(Handle h) { 19 this.handle = JsHandle(h); 20 } 21 static auto create() { 22 return UDPOptions(libwasm_add__object()); 23 } 24 void localAddress()(string localAddress) { 25 Object_Call_string__void(this.handle, "localAddress", localAddress); 26 } 27 string localAddress()() { 28 return Object_Getter__string(this.handle, "localAddress"); 29 } 30 void localPort()(ushort localPort) { 31 Serialize_Object_VarArgCall!void(this.handle, "localPort", "ushort", tuple(localPort)); 32 } 33 ushort localPort()() { 34 return Object_Getter__ushort(this.handle, "localPort"); 35 } 36 void remoteAddress()(string remoteAddress) { 37 Object_Call_string__void(this.handle, "remoteAddress", remoteAddress); 38 } 39 string remoteAddress()() { 40 return Object_Getter__string(this.handle, "remoteAddress"); 41 } 42 void remotePort()(ushort remotePort) { 43 Serialize_Object_VarArgCall!void(this.handle, "remotePort", "ushort", tuple(remotePort)); 44 } 45 ushort remotePort()() { 46 return Object_Getter__ushort(this.handle, "remotePort"); 47 } 48 void addressReuse()(bool addressReuse) { 49 Object_Call_bool__void(this.handle, "addressReuse", addressReuse); 50 } 51 bool addressReuse()() { 52 return Object_Getter__bool(this.handle, "addressReuse"); 53 } 54 void loopback()(bool loopback) { 55 Object_Call_bool__void(this.handle, "loopback", loopback); 56 } 57 bool loopback()() { 58 return Object_Getter__bool(this.handle, "loopback"); 59 } 60 } 61 struct UDPSocket { 62 nothrow: 63 libwasm.bindings.EventTarget.EventTarget _parent; 64 alias _parent this; 65 this(Handle h) { 66 _parent = .EventTarget(h); 67 } 68 Optional!(string) localAddress()() { 69 return Object_Getter__OptionalString(this._parent, "localAddress"); 70 } 71 Optional!(ushort) localPort()() { 72 return UDPSocket_localPort_Get(this._parent); 73 } 74 Optional!(string) remoteAddress()() { 75 return Object_Getter__OptionalString(this._parent, "remoteAddress"); 76 } 77 Optional!(ushort) remotePort()() { 78 return UDPSocket_remotePort_Get(this._parent); 79 } 80 bool addressReuse()() { 81 return Object_Getter__bool(this._parent, "addressReuse"); 82 } 83 bool loopback()() { 84 return Object_Getter__bool(this._parent, "loopback"); 85 } 86 SocketReadyState readyState()() { 87 return Object_Getter__int(this._parent, "readyState"); 88 } 89 auto opened()() { 90 return JsPromise!(void)(Object_Getter__Handle(this._parent, "opened")); 91 } 92 auto closed()() { 93 return JsPromise!(void)(Object_Getter__Handle(this._parent, "closed")); 94 } 95 void onmessage(T0)(scope auto ref Optional!(T0) onmessage) if (isTOrPointer!(T0, EventHandlerNonNull)) { 96 Object_Call_EventHandler__void(this._parent, "onmessage", !onmessage.empty, onmessage.front); 97 } 98 EventHandler onmessage()() { 99 return Object_Getter__EventHandler(this._parent, "onmessage"); 100 } 101 auto close()() { 102 return JsPromise!(void)(Object_Getter__Handle(this._parent, "close")); 103 } 104 void joinMulticastGroup()(string multicastGroupAddress) { 105 Object_Call_string__void(this._parent, "joinMulticastGroup", multicastGroupAddress); 106 } 107 void leaveMulticastGroup()(string multicastGroupAddress) { 108 Object_Call_string__void(this._parent, "leaveMulticastGroup", multicastGroupAddress); 109 } 110 bool send(T1, T2)(scope ref SumType!(string, Blob, ArrayBuffer, ArrayBufferView) data, scope auto ref Optional!(T1) remoteAddress, scope auto ref Optional!(T2) remotePort) if (isTOrPointer!(T1, string) && isTOrPointer!(T2, ushort)) { 111 return Serialize_Object_VarArgCall!bool(this._parent, "send", "SumType!(string,Handle,Handle,Handle);Optional!(string);Optional!(ushort)", tuple(libwasm.sumtype.match!(((string v) => 0),((ref data.Types[1] v) => 1),((ref data.Types[2] v) => 2),((ref data.Types[3] v) => 3))(data),tuple(libwasm.sumtype.match!(((string v) => v),((ref data.Types[1] v) => string.init),((ref data.Types[2] v) => string.init),((ref data.Types[3] v) => string.init))(data),libwasm.sumtype.match!(((string v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle),((ref data.Types[2] v) => Handle.init),((ref data.Types[3] v) => Handle.init))(data),libwasm.sumtype.match!(((string v) => Handle.init),((ref data.Types[1] v) => Handle.init),((ref data.Types[2] v) => cast(Handle)v.handle),((ref data.Types[3] v) => Handle.init))(data),libwasm.sumtype.match!(((string v) => Handle.init),((ref data.Types[1] v) => Handle.init),((ref data.Types[2] v) => Handle.init),((ref data.Types[3] v) => cast(Handle)v.handle))(data)), !remoteAddress.empty, remoteAddress.front, !remotePort.empty, remotePort.front)); 112 } 113 bool send(T1)(scope ref SumType!(string, Blob, ArrayBuffer, ArrayBufferView) data, scope auto ref Optional!(T1) remoteAddress) if (isTOrPointer!(T1, string)) { 114 return Serialize_Object_VarArgCall!bool(this._parent, "send", "SumType!(string,Handle,Handle,Handle);Optional!(string)", tuple(libwasm.sumtype.match!(((string v) => 0),((ref data.Types[1] v) => 1),((ref data.Types[2] v) => 2),((ref data.Types[3] v) => 3))(data),tuple(libwasm.sumtype.match!(((string v) => v),((ref data.Types[1] v) => string.init),((ref data.Types[2] v) => string.init),((ref data.Types[3] v) => string.init))(data),libwasm.sumtype.match!(((string v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle),((ref data.Types[2] v) => Handle.init),((ref data.Types[3] v) => Handle.init))(data),libwasm.sumtype.match!(((string v) => Handle.init),((ref data.Types[1] v) => Handle.init),((ref data.Types[2] v) => cast(Handle)v.handle),((ref data.Types[3] v) => Handle.init))(data),libwasm.sumtype.match!(((string v) => Handle.init),((ref data.Types[1] v) => Handle.init),((ref data.Types[2] v) => Handle.init),((ref data.Types[3] v) => cast(Handle)v.handle))(data)), !remoteAddress.empty, remoteAddress.front)); 115 } 116 bool send()(scope ref SumType!(string, Blob, ArrayBuffer, ArrayBufferView) data) { 117 return Serialize_Object_VarArgCall!bool(this._parent, "send", "SumType!(string,Handle,Handle,Handle)", tuple(libwasm.sumtype.match!(((string v) => 0),((ref data.Types[1] v) => 1),((ref data.Types[2] v) => 2),((ref data.Types[3] v) => 3))(data),tuple(libwasm.sumtype.match!(((string v) => v),((ref data.Types[1] v) => string.init),((ref data.Types[2] v) => string.init),((ref data.Types[3] v) => string.init))(data),libwasm.sumtype.match!(((string v) => Handle.init),((ref data.Types[1] v) => cast(Handle)v.handle),((ref data.Types[2] v) => Handle.init),((ref data.Types[3] v) => Handle.init))(data),libwasm.sumtype.match!(((string v) => Handle.init),((ref data.Types[1] v) => Handle.init),((ref data.Types[2] v) => cast(Handle)v.handle),((ref data.Types[3] v) => Handle.init))(data),libwasm.sumtype.match!(((string v) => Handle.init),((ref data.Types[1] v) => Handle.init),((ref data.Types[2] v) => Handle.init),((ref data.Types[3] v) => cast(Handle)v.handle))(data)))); 118 } 119 } 120 121 122 extern (C) Optional!(ushort) UDPSocket_localPort_Get(Handle); 123 extern (C) Optional!(ushort) UDPSocket_remotePort_Get(Handle);