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