stream_peer.h
1 /*************************************************************************/
2 /* stream_peer.h */
3 /*************************************************************************/
4 /* This file is part of: */
5 /* GODOT ENGINE */
6 /* http://www.godotengine.org */
7 /*************************************************************************/
8 /* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */
9 /* */
10 /* Permission is hereby granted, free of charge, to any person obtaining */
11 /* a copy of this software and associated documentation files (the */
12 /* "Software"), to deal in the Software without restriction, including */
13 /* without limitation the rights to use, copy, modify, merge, publish, */
14 /* distribute, sublicense, and/or sell copies of the Software, and to */
15 /* permit persons to whom the Software is furnished to do so, subject to */
16 /* the following conditions: */
17 /* */
18 /* The above copyright notice and this permission notice shall be */
19 /* included in all copies or substantial portions of the Software. */
20 /* */
21 /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
22 /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
23 /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
24 /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
25 /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
26 /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
27 /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
28 /*************************************************************************/
29 #ifndef STREAM_PEER_H
30 #define STREAM_PEER_H
31 
32 #include "reference.h"
33 
34 class StreamPeer : public Reference {
35  OBJ_TYPE( StreamPeer, Reference );
36  OBJ_CATEGORY("Networking");
37 protected:
38  static void _bind_methods();
39 
40  //bind helpers
41  Error _put_data(const DVector<uint8_t>& p_data);
42  Array _put_partial_data(const DVector<uint8_t>& p_data);
43 
44  Array _get_data(int p_bytes);
45  Array _get_partial_data(int p_bytes);
46 
47  bool big_endian;
48 
49 public:
50 
51  virtual Error put_data(const uint8_t* p_data,int p_bytes)=0;
52  virtual Error put_partial_data(const uint8_t* p_data,int p_bytes, int &r_sent)=0;
53 
54  virtual Error get_data(uint8_t* p_buffer, int p_bytes)=0;
55  virtual Error get_partial_data(uint8_t* p_buffer, int p_bytes,int &r_received)=0;
56 
57  virtual int get_available_bytes() const=0;
58 
59  void set_big_endian(bool p_enable);
60  bool is_big_endian_enabled() const;
61 
62  void put_8(int8_t p_val);
63  void put_u8(uint8_t p_val);
64  void put_16(int16_t p_val);
65  void put_u16(uint16_t p_val);
66  void put_32(int32_t p_val);
67  void put_u32(uint32_t p_val);
68  void put_64(int64_t p_val);
69  void put_u64(uint64_t p_val);
70  void put_float(float p_val);
71  void put_double(double p_val);
72  void put_utf8_string(const String& p_string);
73  void put_var(const Variant& p_variant);
74 
75  uint8_t get_u8();
76  int8_t get_8();
77  uint16_t get_u16();
78  int16_t get_16();
79  uint32_t get_u32();
80  int32_t get_32();
81  uint64_t get_u64();
82  int64_t get_64();
83  float get_float();
84  float get_double();
85  String get_string(int p_bytes);
86  String get_utf8_string(int p_bytes);
87  Variant get_var();
88 
89 
90 
91  StreamPeer() { big_endian=false; }
92 };
93 
94 #endif // STREAM_PEER_H
Definition: array.h:38
virtual Error put_partial_data(const uint8_t *p_data, int p_bytes, int &r_sent)=0
put as much data as possible, without blocking.
virtual Error get_data(uint8_t *p_buffer, int p_bytes)=0
read p_bytes of data, if p_bytes > available, it will block
Definition: variant.h:74
virtual Error get_partial_data(uint8_t *p_buffer, int p_bytes, int &r_received)=0
read as much data as p_bytes into buffer, if less was read, return in r_received
Definition: stream_peer.h:34
Definition: reference.h:40
Definition: ustring.h:64
virtual Error put_data(const uint8_t *p_data, int p_bytes)=0
put a whole chunk of data, blocking until it sent