From 7b34bd98bb00796febd5351b9d2e75fd2c247432 Mon Sep 17 00:00:00 2001 From: chai Date: Sun, 12 Aug 2018 19:52:54 +0800 Subject: *update --- src/lua/net/lua_net_Buffer.h | 92 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/lua/net/lua_net_Buffer.h (limited to 'src/lua/net/lua_net_Buffer.h') diff --git a/src/lua/net/lua_net_Buffer.h b/src/lua/net/lua_net_Buffer.h new file mode 100644 index 0000000..51c7598 --- /dev/null +++ b/src/lua/net/lua_net_Buffer.h @@ -0,0 +1,92 @@ +#ifndef __JIN_LUA_NET_NETBUFFER_H +#define __JIN_LUA_NET_NETBUFFER_H + +#include +#include + +namespace jin +{ +namespace lua +{ +namespace net +{ + + class Buffer + { + public: + Buffer(size_t s = 0) + { + size = s; + buffer = new char[size]; + memset(buffer, 0, size); + } + + Buffer(const char* data, size_t s) + { + size = s; + buffer = new char[size]; + memcpy(buffer, data, size); + } + + ~Buffer() + { + delete[] buffer; + buffer = nullptr; + size = 0; + } + + void append(const void* data, size_t s) + { + if (data == nullptr) + return; + char* buf = buffer; + buffer = new char[size + s]; + memcpy(buffer, buf, size); + memcpy(buffer + size, data, s); + delete[] buf; + size += s; + return; + } + + const char* grabString(int* length, int offset = 0) + { + int l = offset; + for (; l < size; ++l) + { + if (buffer[l] == 0) + break; + } + *length = l - offset + 1; + char* str = (char*)malloc(*length); + memcpy(str, buffer + offset, *length); + return str; + } + + int grabInteger(int* length, int offset = 0) + { + *length = sizeof(int); + return *((int*)buffer); + } + + float grabFloat(int* length, int offset = 0) + { + *length = sizeof(float); + return *((float*)buffer); + } + + bool grabBoolean(int* length, int offset = 0) + { + *length = sizeof(bool); + return *((bool*)buffer); + } + + char* buffer; + size_t size; + + }; + +} // net +} // lua +} // jin + +#endif \ No newline at end of file -- cgit v1.1-26-g67d0