1 module libwasm.bindings.WebSocket;
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 
10 @safe:
11 nothrow:
12 
13 enum BinaryType {
14   blob,
15   arraybuffer
16 }
17 struct WebSocket {
18   nothrow:
19   libwasm.bindings.EventTarget.EventTarget _parent;
20   alias _parent this;
21   this(Handle h) {
22     _parent = .EventTarget(h);
23   }
24   string url()() {
25     return Object_Getter__string(this._parent, "url");
26   }
27   enum ushort CONNECTING = 0;
28   enum ushort OPEN = 1;
29   enum ushort CLOSING = 2;
30   enum ushort CLOSED = 3;
31   ushort readyState()() {
32     return Object_Getter__ushort(this._parent, "readyState");
33   }
34   uint bufferedAmount()() {
35     return Object_Getter__uint(this._parent, "bufferedAmount");
36   }
37   void onopen(T0)(scope auto ref Optional!(T0) onopen) if (isTOrPointer!(T0, EventHandlerNonNull)) {
38     Object_Call_EventHandler__void(this._parent, "onopen", !onopen.empty, onopen.front);
39   }
40   EventHandler onopen()() {
41     return Object_Getter__EventHandler(this._parent, "onopen");
42   }
43   void onerror(T0)(scope auto ref Optional!(T0) onerror) if (isTOrPointer!(T0, EventHandlerNonNull)) {
44     Object_Call_EventHandler__void(this._parent, "onerror", !onerror.empty, onerror.front);
45   }
46   EventHandler onerror()() {
47     return Object_Getter__EventHandler(this._parent, "onerror");
48   }
49   void onclose(T0)(scope auto ref Optional!(T0) onclose) if (isTOrPointer!(T0, EventHandlerNonNull)) {
50     Object_Call_EventHandler__void(this._parent, "onclose", !onclose.empty, onclose.front);
51   }
52   EventHandler onclose()() {
53     return Object_Getter__EventHandler(this._parent, "onclose");
54   }
55   string extensions()() {
56     return Object_Getter__string(this._parent, "extensions");
57   }
58   string protocol()() {
59     return Object_Getter__string(this._parent, "protocol");
60   }
61   void close()(ushort code, string reason) {
62     Serialize_Object_VarArgCall!void(this._parent, "close", "ushort;string", tuple(code, reason));
63   }
64   void close()(ushort code) {
65     Serialize_Object_VarArgCall!void(this._parent, "close", "ushort", tuple(code));
66   }
67   void close()() {
68     Object_Call__void(this._parent, "close");
69   }
70   void onmessage(T0)(scope auto ref Optional!(T0) onmessage) if (isTOrPointer!(T0, EventHandlerNonNull)) {
71     Object_Call_EventHandler__void(this._parent, "onmessage", !onmessage.empty, onmessage.front);
72   }
73   EventHandler onmessage()() {
74     return Object_Getter__EventHandler(this._parent, "onmessage");
75   }
76   void binaryType()(BinaryType binaryType) {
77     Object_Call_int__void(this._parent, "binaryType", binaryType);
78   }
79   BinaryType binaryType()() {
80     return Object_Getter__int(this._parent, "binaryType");
81   }
82   void send()(string data) {
83     Object_Call_string__void(this._parent, "send", data);
84   }
85   void send()(scope ref Blob data) {
86     Object_Call_Handle__void(this._parent, "send", data.handle);
87   }
88   void send()(scope ref ArrayBuffer data) {
89     Object_Call_Handle__void(this._parent, "send", data.handle);
90   }
91   void send()(scope ref ArrayBufferView data) {
92     Object_Call_Handle__void(this._parent, "send", data.handle);
93   }
94   auto createServerWebSocket()(string url, scope ref Sequence!(string) protocols, scope ref nsITransportProvider transportProvider, string negotiatedExtensions) {
95     return WebSocket(Serialize_Object_VarArgCall!Handle(this._parent, "createServerWebSocket", "string;Handle;Handle;string", tuple(url, cast(Handle)protocols.handle, cast(Handle)transportProvider.handle, negotiatedExtensions)));
96   }
97 }
98 
99