mirror of
https://github.com/edubart/otclient.git
synced 2025-10-16 04:24:54 +02:00
new protocol system fixes
This commit is contained in:
@@ -30,6 +30,7 @@ InputMessage::InputMessage()
|
||||
|
||||
void InputMessage::reset()
|
||||
{
|
||||
m_messageSize = 0;
|
||||
m_readPos = MAX_HEADER_SIZE;
|
||||
m_headerPos = MAX_HEADER_SIZE;
|
||||
}
|
||||
@@ -42,47 +43,35 @@ void InputMessage::setBuffer(const std::string& buffer)
|
||||
m_messageSize = buffer.size();
|
||||
}
|
||||
|
||||
uint8 InputMessage::getU8(bool peek)
|
||||
uint8 InputMessage::getU8()
|
||||
{
|
||||
checkRead(1);
|
||||
uint8 v = m_buffer[m_readPos];
|
||||
|
||||
if(!peek)
|
||||
m_readPos += 1;
|
||||
|
||||
m_readPos += 1;
|
||||
return v;
|
||||
}
|
||||
|
||||
uint16 InputMessage::getU16(bool peek)
|
||||
uint16 InputMessage::getU16()
|
||||
{
|
||||
checkRead(2);
|
||||
uint16 v = Fw::readLE16(m_buffer + m_readPos);
|
||||
|
||||
if(!peek)
|
||||
m_readPos += 2;
|
||||
|
||||
m_readPos += 2;
|
||||
return v;
|
||||
}
|
||||
|
||||
uint32 InputMessage::getU32(bool peek)
|
||||
uint32 InputMessage::getU32()
|
||||
{
|
||||
checkRead(4);
|
||||
uint32 v = Fw::readLE32(m_buffer + m_readPos);
|
||||
|
||||
if(!peek)
|
||||
m_readPos += 4;
|
||||
|
||||
m_readPos += 4;
|
||||
return v;
|
||||
}
|
||||
|
||||
uint64 InputMessage::getU64(bool peek)
|
||||
uint64 InputMessage::getU64()
|
||||
{
|
||||
checkRead(8);
|
||||
uint64 v = Fw::readLE64(m_buffer + m_readPos);
|
||||
|
||||
if(!peek)
|
||||
m_readPos += 8;
|
||||
|
||||
m_readPos += 8;
|
||||
return v;
|
||||
}
|
||||
|
||||
|
@@ -40,16 +40,22 @@ public:
|
||||
void setBuffer(const std::string& buffer);
|
||||
|
||||
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);
|
||||
uint8 getU8();
|
||||
uint16 getU16();
|
||||
uint32 getU32();
|
||||
uint64 getU64();
|
||||
std::string getString();
|
||||
|
||||
uint8 peekU8() { uint8 v = getU8(); m_readPos-=1; return v; }
|
||||
uint16 peekU16() { uint16 v = getU16(); m_readPos-=2; return v; }
|
||||
uint32 peekU32() { uint32 v = getU32(); m_readPos-=4; return v; }
|
||||
uint64 peekU64() { uint64 v = getU64(); m_readPos-=8; return v; }
|
||||
|
||||
void decryptRSA(int size, const std::string& p, const std::string& q, const std::string& d);
|
||||
|
||||
int getReadSize() { return m_readPos - m_headerPos; }
|
||||
int getUnreadSize() { return m_messageSize - (m_readPos - m_headerPos); }
|
||||
uint16 getMessageSize() { return m_messageSize; }
|
||||
|
||||
bool eof() { return (m_readPos - m_headerPos) >= m_messageSize; }
|
||||
|
||||
@@ -64,7 +70,6 @@ protected:
|
||||
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; }
|
||||
|
||||
uint16 readSize() { return getU16(); }
|
||||
bool readChecksum();
|
||||
|
@@ -51,11 +51,12 @@ public:
|
||||
|
||||
void encryptRSA(int size, const std::string& key);
|
||||
|
||||
uint16 getMessageSize() { return m_messageSize; }
|
||||
|
||||
protected:
|
||||
uint8* getWriteBuffer() { return m_buffer + m_writePos; }
|
||||
uint8* getHeaderBuffer() { return m_buffer + m_headerPos; }
|
||||
uint8* getDataBuffer() { return m_buffer + MAX_HEADER_SIZE; }
|
||||
uint16 getMessageSize() { return m_messageSize; }
|
||||
|
||||
void writeChecksum();
|
||||
void writeMessageSize();
|
||||
|
Reference in New Issue
Block a user