diff options
Diffstat (limited to 'modules/websocket/emws_peer.h')
| -rw-r--r-- | modules/websocket/emws_peer.h | 85 | 
1 files changed, 85 insertions, 0 deletions
diff --git a/modules/websocket/emws_peer.h b/modules/websocket/emws_peer.h new file mode 100644 index 0000000000..a50d1874ba --- /dev/null +++ b/modules/websocket/emws_peer.h @@ -0,0 +1,85 @@ +/*************************************************************************/ +/*  emws_peer.h                                                          */ +/*************************************************************************/ +/*                       This file is part of:                           */ +/*                           GODOT ENGINE                                */ +/*                      https://godotengine.org                          */ +/*************************************************************************/ +/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur.                 */ +/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)    */ +/*                                                                       */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the       */ +/* "Software"), to deal in the Software without restriction, including   */ +/* without limitation the rights to use, copy, modify, merge, publish,   */ +/* distribute, sublicense, and/or sell copies of the Software, and to    */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions:                                             */ +/*                                                                       */ +/* The above copyright notice and this permission notice shall be        */ +/* included in all copies or substantial portions of the Software.       */ +/*                                                                       */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */ +/*************************************************************************/ +#ifndef EMWSPEER_H +#define EMWSPEER_H + +#ifdef JAVASCRIPT_ENABLED + +#include "core/error_list.h" +#include "core/io/packet_peer.h" +#include "core/ring_buffer.h" +#include "emscripten.h" +#include "websocket_peer.h" + +class EMWSPeer : public WebSocketPeer { + +	GDCIIMPL(EMWSPeer, WebSocketPeer); + +private: +	enum { +		PACKET_BUFFER_SIZE = 65536 - 5 // 4 bytes for the size, 1 for for type +	}; + +	int peer_sock; +	WriteMode write_mode; + +	uint8_t packet_buffer[PACKET_BUFFER_SIZE]; +	RingBuffer<uint8_t> in_buffer; +	int queue_count; +	bool _was_string; + +public: +	void read_msg(uint8_t *p_data, uint32_t p_size, bool p_is_string); +	void set_sock(int sock); +	virtual int get_available_packet_count() const; +	virtual Error get_packet(const uint8_t **r_buffer, int &r_buffer_size); +	virtual Error put_packet(const uint8_t *p_buffer, int p_buffer_size); +	virtual int get_max_packet_size() const { return PACKET_BUFFER_SIZE; }; + +	virtual void close(); +	virtual bool is_connected_to_host() const; +	virtual IP_Address get_connected_host() const; +	virtual uint16_t get_connected_port() const; + +	virtual WriteMode get_write_mode() const; +	virtual void set_write_mode(WriteMode p_mode); +	virtual bool was_string_packet() const; + +	void set_wsi(struct lws *wsi); +	Error read_wsi(void *in, size_t len); +	Error write_wsi(); + +	EMWSPeer(); +	~EMWSPeer(); +}; + +#endif // JAVASCRIPT_ENABLED + +#endif // LSWPEER_H  |