1 /**
2 Base class for WebSocket server and client.
3 
4 Copyright:
5 Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur.  
6 Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md)  
7 Copyright (c) 2017-2018 Godot-D contributors  
8 
9 License: $(LINK2 https://opensource.org/licenses/MIT, MIT License)
10 
11 
12 */
13 module godot.websocketmultiplayerpeer;
14 import std.meta : AliasSeq, staticIndexOf;
15 import std.traits : Unqual;
16 import godot.d.traits;
17 import godot.core;
18 import godot.c;
19 import godot.d.bind;
20 import godot.d.reference;
21 import godot.globalenums;
22 import godot.object;
23 import godot.networkedmultiplayerpeer;
24 import godot.packetpeer;
25 import godot.reference;
26 import godot.websocketpeer;
27 /**
28 Base class for WebSocket server and client.
29 
30 Base class for WebSocket server and client, allowing them to be used as network peer for the $(D MultiplayerAPI).
31 */
32 @GodotBaseClass struct WebSocketMultiplayerPeer
33 {
34 	package(godot) enum string _GODOT_internal_name = "WebSocketMultiplayerPeer";
35 public:
36 @nogc nothrow:
37 	union { /** */ godot_object _godot_object; /** */ NetworkedMultiplayerPeer _GODOT_base; }
38 	alias _GODOT_base this;
39 	alias BaseClasses = AliasSeq!(typeof(_GODOT_base), typeof(_GODOT_base).BaseClasses);
40 	package(godot) __gshared bool _classBindingInitialized = false;
41 	package(godot) static struct GDNativeClassBinding
42 	{
43 		__gshared:
44 		@GodotName("get_peer") GodotMethod!(WebSocketPeer, long) getPeer;
45 		@GodotName("set_buffers") GodotMethod!(GodotError, long, long, long, long) setBuffers;
46 	}
47 	/// 
48 	pragma(inline, true) bool opEquals(in WebSocketMultiplayerPeer other) const
49 	{ return _godot_object.ptr is other._godot_object.ptr; }
50 	/// 
51 	pragma(inline, true) typeof(null) opAssign(typeof(null) n)
52 	{ _godot_object.ptr = n; return null; }
53 	/// 
54 	pragma(inline, true) bool opEquals(typeof(null) n) const
55 	{ return _godot_object.ptr is n; }
56 	/// 
57 	size_t toHash() const @trusted { return cast(size_t)_godot_object.ptr; }
58 	mixin baseCasts;
59 	/// Construct a new instance of WebSocketMultiplayerPeer.
60 	/// Note: use `memnew!WebSocketMultiplayerPeer` instead.
61 	static WebSocketMultiplayerPeer _new()
62 	{
63 		static godot_class_constructor constructor;
64 		if(constructor is null) constructor = _godot_api.godot_get_class_constructor("WebSocketMultiplayerPeer");
65 		if(constructor is null) return typeof(this).init;
66 		return cast(WebSocketMultiplayerPeer)(constructor());
67 	}
68 	@disable new(size_t s);
69 	/**
70 	Returns the $(D WebSocketPeer) associated to the given `peer_id`.
71 	*/
72 	Ref!WebSocketPeer getPeer(in long peer_id) const
73 	{
74 		checkClassBinding!(typeof(this))();
75 		return ptrcall!(WebSocketPeer)(GDNativeClassBinding.getPeer, _godot_object, peer_id);
76 	}
77 	/**
78 	Configures the buffer sizes for this WebSocket peer. Default values can be specified in the Project Settings under `network/limits`. For server, values are meant per connected peer.
79 	The first two parameters define the size and queued packets limits of the input buffer, the last two of the output buffer.
80 	Buffer sizes are expressed in KiB, so `4 = 2^12 = 4096 bytes`. All parameters will be rounded up to the nearest power of two.
81 	$(B Note:) HTML5 exports only use the input buffer since the output one is managed by browsers.
82 	*/
83 	GodotError setBuffers(in long input_buffer_size_kb, in long input_max_packets, in long output_buffer_size_kb, in long output_max_packets)
84 	{
85 		checkClassBinding!(typeof(this))();
86 		return ptrcall!(GodotError)(GDNativeClassBinding.setBuffers, _godot_object, input_buffer_size_kb, input_max_packets, output_buffer_size_kb, output_max_packets);
87 	}
88 }