载入中...
搜索中...
未找到
NetStream.h
浏览该文件的文档.
1#pragma once
2
3#include <cstdint>
4#include <string>
5#include <vector>
6
7namespace eve::network {
8
17class NetWriter {
18public:
19 NetWriter() = default;
20
21 void writeU8(uint8_t v);
22 void writeI8(int8_t v);
23 void writeU16(uint16_t v);
24 void writeI16(int16_t v);
25 void writeU32(uint32_t v);
26 void writeI32(int32_t v);
27 void writeU64(uint64_t v);
28 void writeI64(int64_t v);
29 void writeF32(float v);
30 void writeF64(double v);
31 void writeBool(bool v);
32 void writeString(const std::string& s);
33 void writeBytes(const void* d, size_t n);
34
35 size_t size() const { return buf_.size(); }
36 const char* data() const { return buf_.data(); }
37 const std::vector<char>& buffer() const { return buf_; }
38 std::string toString() const {
39 return std::string(buf_.data(), buf_.size());
40 }
41
42private:
43 void put(const void* d, size_t n);
44
45 std::vector<char> buf_;
46};
47
48class NetReader {
49public:
50 NetReader() = default;
51 NetReader(const void* d, size_t n);
52 explicit NetReader(const std::vector<char>& d);
53
55 bool init(const void* d, size_t n);
56 bool setBytes(const std::string& s) { return init(s.data(), s.size()); }
57
58 uint8_t u8();
59 int8_t i8();
60 uint16_t u16();
61 int16_t i16();
62 uint32_t u32();
63 int32_t i32();
64 uint64_t u64();
65 int64_t i64();
66 float f32();
67 double f64();
68 bool b();
69 std::string str();
70 std::vector<char> bytes(size_t n);
71
72 size_t remaining() const;
73 size_t pos() const { return pos_; }
74 bool ok() const { return ok_; }
75
76private:
77 bool take(void* out, size_t n);
78
79 const char* data_ = nullptr;
80 size_t size_ = 0;
81 size_t pos_ = 0;
82 bool ok_ = false;
83};
84
85} // namespace eve::network
glm::vec3 n
Definition Grass.cpp:64
int d
int v
uint32_t s
Definition Weather.cpp:28
size_t remaining() const
bool setBytes(const std::string &s)
Definition NetStream.h:56
std::vector< char > bytes(size_t n)
size_t pos() const
Definition NetStream.h:73
bool init(const void *d, size_t n)
std::string toString() const
Definition NetStream.h:38
void writeU8(uint8_t v)
Definition NetStream.cpp:55
void writeI64(int64_t v)
Definition NetStream.cpp:83
void writeBytes(const void *d, size_t n)
const char * data() const
Definition NetStream.h:36
void writeF32(float v)
Definition NetStream.cpp:87
void writeI16(int16_t v)
Definition NetStream.cpp:67
void writeString(const std::string &s)
void writeI32(int32_t v)
Definition NetStream.cpp:75
void writeF64(double v)
Definition NetStream.cpp:94
void writeI8(int8_t v)
Definition NetStream.cpp:59
void writeU64(uint64_t v)
Definition NetStream.cpp:79
void writeU16(uint16_t v)
Definition NetStream.cpp:63
void writeU32(uint32_t v)
Definition NetStream.cpp:71
size_t size() const
Definition NetStream.h:35
const std::vector< char > & buffer() const
Definition NetStream.h:37