1 module libwasm.bindings.TCPSocket;
2 
3 import libwasm.types;
4 
5 import memutils.ct: tuple;
6 import libwasm.bindings.EventHandler;
7 import libwasm.bindings.EventTarget;
8 import libwasm.bindings.TCPServerSocket;
9 
10 @safe:
11 nothrow:
12 
13 struct LegacyMozTCPSocket {
14   nothrow:
15   JsHandle handle;
16   alias handle this;
17   this(Handle h) {
18     this.handle = JsHandle(h);
19   }
20   auto open()(string host, ushort port, scope ref SocketOptions options) {
21     return TCPSocket(Serialize_Object_VarArgCall!Handle(this.handle, "open", "string;ushort;Handle", tuple(host, port, cast(Handle)options.handle)));
22   }
23   auto open()(string host, ushort port) {
24     return TCPSocket(Serialize_Object_VarArgCall!Handle(this.handle, "open", "string;ushort", tuple(host, port)));
25   }
26   auto listen()(ushort port, scope ref ServerSocketOptions options, ushort backlog /* = 0 */) {
27     return TCPServerSocket(Serialize_Object_VarArgCall!Handle(this.handle, "listen", "ushort;Handle;ushort", tuple(port, cast(Handle)options.handle, backlog)));
28   }
29   auto listen()(ushort port, scope ref ServerSocketOptions options) {
30     return TCPServerSocket(Serialize_Object_VarArgCall!Handle(this.handle, "listen", "ushort;Handle", tuple(port, cast(Handle)options.handle)));
31   }
32   auto listen()(ushort port) {
33     return TCPServerSocket(Serialize_Object_VarArgCall!Handle(this.handle, "listen", "ushort", tuple(port)));
34   }
35 }
36 struct SocketOptions {
37   nothrow:
38   JsHandle handle;
39   alias handle this;
40   this(Handle h) {
41     this.handle = JsHandle(h);
42   }
43   static auto create() {
44     return SocketOptions(libwasm_add__object());
45   }
46   void useSecureTransport()(bool useSecureTransport) {
47     Object_Call_bool__void(this.handle, "useSecureTransport", useSecureTransport);
48   }
49   bool useSecureTransport()() {
50     return Object_Getter__bool(this.handle, "useSecureTransport");
51   }
52   void binaryType()(TCPSocketBinaryType binaryType) {
53     Object_Call_int__void(this.handle, "binaryType", binaryType);
54   }
55   TCPSocketBinaryType binaryType()() {
56     return Object_Getter__int(this.handle, "binaryType");
57   }
58 }
59 enum TCPReadyState {
60   connecting,
61   open,
62   closing,
63   closed
64 }
65 struct TCPSocket {
66   nothrow:
67   libwasm.bindings.EventTarget.EventTarget _parent;
68   alias _parent this;
69   this(Handle h) {
70     _parent = .EventTarget(h);
71   }
72   void upgradeToSecure()() {
73     Object_Call__void(this._parent, "upgradeToSecure");
74   }
75   string host()() {
76     return Object_Getter__string(this._parent, "host");
77   }
78   ushort port()() {
79     return Object_Getter__ushort(this._parent, "port");
80   }
81   bool ssl()() {
82     return Object_Getter__bool(this._parent, "ssl");
83   }
84   uint bufferedAmount()() {
85     return Object_Getter__uint(this._parent, "bufferedAmount");
86   }
87   void suspend()() {
88     Object_Call__void(this._parent, "suspend");
89   }
90   void resume()() {
91     Object_Call__void(this._parent, "resume");
92   }
93   void close()() {
94     Object_Call__void(this._parent, "close");
95   }
96   void closeImmediately()() {
97     Object_Call__void(this._parent, "closeImmediately");
98   }
99   bool send()(string data) {
100     return Object_Call_string__bool(this._parent, "send", data);
101   }
102   bool send()(scope ref ArrayBuffer data, uint byteOffset /* = 0 */, uint byteLength) {
103     return Serialize_Object_VarArgCall!bool(this._parent, "send", "Handle;uint;uint", tuple(cast(Handle)data.handle, byteOffset, byteLength));
104   }
105   bool send()(scope ref ArrayBuffer data, uint byteOffset /* = 0 */) {
106     return Serialize_Object_VarArgCall!bool(this._parent, "send", "Handle;uint", tuple(cast(Handle)data.handle, byteOffset));
107   }
108   bool send()(scope ref ArrayBuffer data) {
109     return Serialize_Object_VarArgCall!bool(this._parent, "send", "Handle", tuple(cast(Handle)data.handle));
110   }
111   TCPReadyState readyState()() {
112     return Object_Getter__int(this._parent, "readyState");
113   }
114   TCPSocketBinaryType binaryType()() {
115     return Object_Getter__int(this._parent, "binaryType");
116   }
117   void onopen(T0)(scope auto ref Optional!(T0) onopen) if (isTOrPointer!(T0, EventHandlerNonNull)) {
118     Object_Call_EventHandler__void(this._parent, "onopen", !onopen.empty, onopen.front);
119   }
120   EventHandler onopen()() {
121     return Object_Getter__EventHandler(this._parent, "onopen");
122   }
123   void ondrain(T0)(scope auto ref Optional!(T0) ondrain) if (isTOrPointer!(T0, EventHandlerNonNull)) {
124     Object_Call_EventHandler__void(this._parent, "ondrain", !ondrain.empty, ondrain.front);
125   }
126   EventHandler ondrain()() {
127     return Object_Getter__EventHandler(this._parent, "ondrain");
128   }
129   void ondata(T0)(scope auto ref Optional!(T0) ondata) if (isTOrPointer!(T0, EventHandlerNonNull)) {
130     Object_Call_EventHandler__void(this._parent, "ondata", !ondata.empty, ondata.front);
131   }
132   EventHandler ondata()() {
133     return Object_Getter__EventHandler(this._parent, "ondata");
134   }
135   void onerror(T0)(scope auto ref Optional!(T0) onerror) if (isTOrPointer!(T0, EventHandlerNonNull)) {
136     Object_Call_EventHandler__void(this._parent, "onerror", !onerror.empty, onerror.front);
137   }
138   EventHandler onerror()() {
139     return Object_Getter__EventHandler(this._parent, "onerror");
140   }
141   void onclose(T0)(scope auto ref Optional!(T0) onclose) if (isTOrPointer!(T0, EventHandlerNonNull)) {
142     Object_Call_EventHandler__void(this._parent, "onclose", !onclose.empty, onclose.front);
143   }
144   EventHandler onclose()() {
145     return Object_Getter__EventHandler(this._parent, "onclose");
146   }
147 }
148 enum TCPSocketBinaryType {
149   arraybuffer,
150   string
151 }
152 
153