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