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);