载入中...
搜索中...
未找到
NetStream.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
5#include <cstdint>
6#include <string>
7#include <vector>
8
9namespace eve::network {
10
21public:
23 NetWriter() = default;
24
26 void writeU8(uint8_t v);
28 void writeI8(int8_t v);
30 void writeU16(uint16_t v);
32 void writeI16(int16_t v);
34 void writeU32(uint32_t v);
36 void writeI32(int32_t v);
38 void writeU64(uint64_t v);
40 void writeI64(int64_t v);
42 void writeF32(float v);
44 void writeF64(double v);
46 void writeBool(bool v);
48 void writeString(const std::string& s);
50 void writeBytes(const void* d, size_t n);
51
53 size_t size() const { return buf_.size(); }
55 const char* data() const { return buf_.data(); }
57 const std::vector<char>& buffer() const { return buf_; }
59 std::string toString() const {
61 return std::string(buf_.data(), buf_.size());
62 }
63
64private:
65 void put(const void* d, size_t n);
66
67 std::vector<char> buf_;
68};
69
72public:
74 NetReader() = default;
76 NetReader(const void* d, size_t n);
78 explicit NetReader(const std::vector<char>& d);
79
82 bool init(const void* d, size_t n);
84 bool setBytes(const std::string& s) { return init(s.data(), s.size()); }
85
87 uint8_t u8();
89 int8_t i8();
91 uint16_t u16();
93 int16_t i16();
95 uint32_t u32();
97 int32_t i32();
99 uint64_t u64();
101 int64_t i64();
103 float f32();
105 double f64();
107 bool b();
109 std::string str();
111 std::vector<char> bytes(size_t n);
112
114 size_t remaining() const;
116 size_t pos() const { return pos_; }
118 bool ok() const { return ok_; }
119
120private:
121 bool take(void* out, size_t n);
122
123 const char* data_ = nullptr;
124 size_t size_ = 0;
125 size_t pos_ = 0;
126 bool ok_ = false;
127};
128
129} // namespace eve::network
const std::string & s
#define EVENGINE_API_PLATFORM
Definition Export.h:107
glm::vec3 n
Definition Grass.cpp:63
float v
std::uint64_t bytes
MeleePoint3 b
Definition MeleeHit.cpp:41
float d
EVENGINE_API_PLATFORM public API.
Definition NetStream.h:71
bool setBytes(const std::string &s)
Sets the bytes.
Definition NetStream.h:84
size_t pos() const
Pos.
Definition NetStream.h:116
bool ok() const
Ok.
Definition NetStream.h:118
NetReader()=default
Net reader.
EVENGINE_API_PLATFORM public API.
Definition NetStream.h:20
std::string toString() const
To string.
Definition NetStream.h:59
NetWriter()=default
Net writer.
const char * data() const
Data.
Definition NetStream.h:55
size_t size() const
Returns the size of .
Definition NetStream.h:53
const std::vector< char > & buffer() const
Buffer.
Definition NetStream.h:57