new protocol system fixes

This commit is contained in:
Eduardo Bart
2012-05-14 21:04:04 -03:00
parent 7bca3de8eb
commit 946ec64e7f
8 changed files with 34 additions and 33 deletions

View File

@@ -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;
}

View File

@@ -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();

View File

@@ -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();