1 module libwasm.bindings.DedicatedWorkerGlobalScope;
2 
3 import libwasm.types;
4 
5 import memutils.ct: tuple;
6 import libwasm.bindings.EventHandler;
7 import libwasm.bindings.MessagePort;
8 import libwasm.bindings.WorkerGlobalScope;
9 
10 @safe:
11 nothrow:
12 
13 struct DedicatedWorkerGlobalScope {
14   nothrow:
15   libwasm.bindings.WorkerGlobalScope.WorkerGlobalScope _parent;
16   alias _parent this;
17   this(Handle h) {
18     _parent = .WorkerGlobalScope(h);
19   }
20   string name()() {
21     return Object_Getter__string(this._parent, "name");
22   }
23   void postMessage(T0)(scope auto ref T0 message, scope ref Sequence!(JsObject) transfer) {
24     // Any
25     Handle _handle_message = getOrCreateHandle(message);
26     Serialize_Object_VarArgCall!void(this._parent, "postMessage", "Handle;Handle", tuple(_handle_message, cast(Handle)transfer.handle));
27     dropHandle!(T0)(_handle_message);
28   }
29   void postMessage(T0)(scope auto ref T0 message, scope ref PostMessageOptions options) {
30     // Any
31     Handle _handle_message = getOrCreateHandle(message);
32     Serialize_Object_VarArgCall!void(this._parent, "postMessage", "Handle;Handle", tuple(_handle_message, cast(Handle)options.handle));
33     dropHandle!(T0)(_handle_message);
34   }
35   void postMessage(T0)(scope auto ref T0 message) {
36     import std.traits : isNumeric, isFloatingPoint, isSomeString;
37     if (isSomeString!T0) {
38       Object_Call_string__void(this._parent, "postMessage", cast(string) message);
39       return;
40     } else if (isNumeric!T0 && !isFloatingPoint!T0) {
41       Object_Call_long__void(this._parent, "postMessage", cast(long) message);
42       return;
43     } else if (isFloatingPoint!T0) {
44       Object_Call_double__void(this._parent, "postMessage", cast(double) message);
45       return;
46     }
47     // Any
48     Handle _handle_message = getOrCreateHandle(message);
49     Object_Call_Handle__void(this._parent, "postMessage", _handle_message);
50     dropHandle!(T0)(_handle_message);
51   }
52   void close()() {
53     Object_Call__void(this._parent, "close");
54   }
55   void onmessage(T0)(scope auto ref Optional!(T0) onmessage) if (isTOrPointer!(T0, EventHandlerNonNull)) {
56     Object_Call_EventHandler__void(this._parent, "onmessage", !onmessage.empty, onmessage.front);
57   }
58   EventHandler onmessage()() {
59     return Object_Getter__EventHandler(this._parent, "onmessage");
60   }
61   void onmessageerror(T0)(scope auto ref Optional!(T0) onmessageerror) if (isTOrPointer!(T0, EventHandlerNonNull)) {
62     Object_Call_EventHandler__void(this._parent, "onmessageerror", !onmessageerror.empty, onmessageerror.front);
63   }
64   EventHandler onmessageerror()() {
65     return Object_Getter__EventHandler(this._parent, "onmessageerror");
66   }
67 }
68 
69