mirror of
https://github.com/edubart/otclient.git
synced 2025-12-17 06:07:11 +01:00
support for protocol 810
* change in protocol/network classes to make compatible with older protocols * use filestream for reading dat * add many ifdefs for multi-protocol support
This commit is contained in:
@@ -31,34 +31,43 @@ class InputMessage
|
||||
public:
|
||||
enum {
|
||||
BUFFER_MAXSIZE = 16384,
|
||||
HEADER_POS = 0,
|
||||
HEADER_LENGTH = 2,
|
||||
CHECKSUM_POS = 2,
|
||||
CHECKSUM_LENGTH = 4,
|
||||
DATA_POS = 6,
|
||||
UNENCRYPTED_DATA_POS = 8
|
||||
MAX_HEADER_SIZE = 8,
|
||||
};
|
||||
|
||||
InputMessage();
|
||||
|
||||
void reset();
|
||||
|
||||
void fillBuffer(uint8 *buffer, uint16 size);
|
||||
uint16 readSize() { return getU16(); }
|
||||
bool readChecksum();
|
||||
|
||||
void setHeaderSize(uint16 size);
|
||||
void setMessageSize(uint16 size) { m_messageSize = size; }
|
||||
|
||||
void skipBytes(uint16 bytes) { m_readPos += bytes; }
|
||||
|
||||
uint8 getU8(bool peek = false);
|
||||
uint16 getU16(bool peek = false);
|
||||
uint32 getU32(bool peek = false);
|
||||
uint64 getU64(bool peek = false);
|
||||
std::string getString();
|
||||
|
||||
void skipBytes(uint16 bytes) { m_readPos += bytes; }
|
||||
uint8* getBuffer() { return m_buffer; }
|
||||
uint8* getReadBuffer() { return m_buffer + m_readPos; }
|
||||
uint8* getHeaderBuffer() { return m_buffer + m_headerPos; }
|
||||
uint8* getDataBuffer() { return m_buffer + MAX_HEADER_SIZE; }
|
||||
uint16 getHeaderSize() { return (MAX_HEADER_SIZE - m_headerPos); }
|
||||
uint16 getMessageSize() { return m_messageSize; }
|
||||
void setMessageSize(uint16 messageSize) { m_messageSize = messageSize; }
|
||||
bool eof() { return m_readPos >= m_messageSize; }
|
||||
int getReadSize() { return m_readPos - m_headerPos; }
|
||||
int getUnreadSize() { return m_messageSize - (m_readPos - m_headerPos); }
|
||||
|
||||
bool eof() { return (m_readPos - m_headerPos) >= m_messageSize; }
|
||||
|
||||
private:
|
||||
bool canRead(int bytes);
|
||||
void checkRead(int bytes);
|
||||
|
||||
uint16 m_headerPos;
|
||||
uint16 m_readPos;
|
||||
uint16 m_messageSize;
|
||||
uint8 m_buffer[BUFFER_MAXSIZE];
|
||||
|
||||
Reference in New Issue
Block a user