網遊伺服器框架(2)Stream

2021-06-19 13:12:53 字數 1920 閱讀 2555

為了方便序列化資料,特建立了inputstream  和 outstream 2種資料容器。

每個流在初始化的時候。都帶有位元組序屬性, 在寫入和讀取的時候,先處理再返回,這樣邏輯部分可以解決位元組序等問題。

output 在初始化的時候  建立乙個固定大小的快取區。 保持乙個流指標。 每次寫入新的資料,都copy資料到流指標處,然後指標向後偏移寫入的大小

input  同上。每次讀取。都偏移指標位置。

#define default_buffer_max 128

class fsoutputstream

}public:

void tobytes(void*);

size_t getlength();

void subbuffer(size_t start, size_t len);

void writelonglong(unsigned long long);

void writeint(int val);

void writelong(long val);

void writeshort(short val);

void writeuint(unsigned int);

void writeushort(unsigned short);

void writefloat(float val);

void writebyte(byte val);

void writedatas(const void*, size_t);

void writestring(char*, int);

void writestring(const char*);

void writestring(std::string str);

};

#include "fsoutputstream.h"

fsoutputstream::fsoutputstream(size_t length):m_ibufferlength(length), m_ipos(0), m_pdata(malloc(length))

void fsoutputstream::tobytes(void* out)

void fsoutputstream::scalebuffer()

void fsoutputstream::subbuffer(size_t start, size_t len)

void fsoutputstream::writestring(const char* data)

void fsoutputstream::writestring(char* data, int len)

void fsoutputstream::writeint(int val)

void fsoutputstream::writelong(long val)

void fsoutputstream::writelonglong(unsigned long long v)

void fsoutputstream::writeshort(short val)

void fsoutputstream::writeuint(unsigned int val)

void fsoutputstream::writeushort(unsigned short val)

void fsoutputstream::writefloat(float val)

void fsoutputstream::writebyte(byte val)

void fsoutputstream::writedatas(const void* data, size_t len)

memcpy((byte*)m_pdata + m_ipos, data, len);

m_ipos += len;

}

網遊伺服器框架(1)Session

因為不想去處理網路io 所以偷懶直接使用了 libevent作為網路庫。但是後果就是很多莫名其妙的bug無法明白。以後嘗試替換 首先 每乙個新連線 都會分配乙個 sessionid 作為流水號增長。相當於乙個client 然後統一放到乙個singlton的sessionmanager裡做統一處理 使...

通用網遊伺服器

通用網遊伺服器是適用於一類網遊的伺服器,如rpg網遊伺服器.通用伺服器提供的是適用於該類網遊的機制,與內容無關.特定於某乙個遊戲的內容由指令碼和配置檔案實現.目前在指令碼機制不完善的情況下,可以把特定的遊戲內容分離到動態鏈結庫中,實現機制與內容分開.這個通用的網遊伺服器還可以分成兩個部分 1.核心,...

通用網遊伺服器

通用網遊伺服器是適用於一類網遊的伺服器,如rpg網遊伺服器.通用伺服器提供的是適用於該類網遊的機制,與內容無關.特定於某乙個遊戲的內容由指令碼和配置檔案實現.目前在指令碼機制不完善的情況下,可以把特定的遊戲內容分離到動態鏈結庫中,實現機制與內容分開.這個通用的網遊伺服器還可以分成兩個部分 1.核心,...