public:
NetworkPacket(u16 command, u32 datasize, u16 peer_id);
NetworkPacket(u16 command, u32 datasize);
- NetworkPacket(): m_datasize(0), m_read_offset(0), m_command(0),
- m_peer_id(0) {}
+ NetworkPacket() {}
~NetworkPacket();
void putRawPacket(u8 *data, u32 datasize, u16 peer_id);
u16 getPeerId() { return m_peer_id; }
u16 getCommand() { return m_command; }
const u32 getRemainingBytes() const { return m_datasize - m_read_offset; }
+ const char* getRemainingString() { return getString(m_read_offset); }
// Returns a c-string without copying.
// A better name for this would be getRawString()
- char* getString(u32 from_offset);
+ const char* getString(u32 from_offset);
// major difference to putCString(): doesn't write len into the buffer
void putRawString(const char* src, u32 len);
+ void putRawString(const std::string &src)
+ { putRawString(src.c_str(), src.size()); }
NetworkPacket& operator>>(std::string& dst);
- NetworkPacket& operator<<(std::string src);
+ NetworkPacket& operator<<(const std::string &src);
- void putLongString(std::string src);
+ void putLongString(const std::string &src);
NetworkPacket& operator>>(std::wstring& dst);
- NetworkPacket& operator<<(std::wstring src);
+ NetworkPacket& operator<<(const std::wstring &src);
std::string readLongString();
NetworkPacket& operator>>(u64& dst);
NetworkPacket& operator<<(u64 src);
+ NetworkPacket& operator>>(std::time_t& dst);
+ NetworkPacket& operator<<(std::time_t src);
+
NetworkPacket& operator>>(float& dst);
NetworkPacket& operator<<(float src);
}
std::vector<u8> m_data;
- u32 m_datasize;
- u32 m_read_offset;
- u16 m_command;
- u16 m_peer_id;
+ u32 m_datasize = 0;
+ u32 m_read_offset = 0;
+ u16 m_command = 0;
+ u16 m_peer_id = 0;
};
#endif