#include "util/serialize.h"
NetworkPacket::NetworkPacket(u16 command, u32 datasize, u16 peer_id):
-m_datasize(datasize), m_read_offset(0), m_command(command), m_peer_id(peer_id)
+m_datasize(datasize), m_command(command), m_peer_id(peer_id)
{
m_data.resize(m_datasize);
}
NetworkPacket::NetworkPacket(u16 command, u32 datasize):
-m_datasize(datasize), m_read_offset(0), m_command(command), m_peer_id(0)
+m_datasize(datasize), m_command(command)
{
m_data.resize(m_datasize);
}
m_data = std::vector<u8>(&data[2], &data[2 + m_datasize]);
}
-char* NetworkPacket::getString(u32 from_offset)
+const char* NetworkPacket::getString(u32 from_offset)
{
checkReadOffset(from_offset, 0);
m_data.resize(m_datasize);
}
- if (m_datasize == 0)
+ if (len == 0)
return;
memcpy(&m_data[m_read_offset], src, len);
return *this;
}
-NetworkPacket& NetworkPacket::operator<<(std::string src)
+NetworkPacket& NetworkPacket::operator<<(const std::string &src)
{
u16 msgsize = src.size();
if (msgsize > STRING_MAX_LEN) {
return *this;
}
-void NetworkPacket::putLongString(std::string src)
+void NetworkPacket::putLongString(const std::string &src)
{
u32 msgsize = src.size();
if (msgsize > LONG_STRING_MAX_LEN) {
return *this;
}
-NetworkPacket& NetworkPacket::operator<<(std::wstring src)
+NetworkPacket& NetworkPacket::operator<<(const std::wstring &src)
{
u16 msgsize = src.size();
if (msgsize > WIDE_STRING_MAX_LEN) {
return *this;
}
+NetworkPacket& NetworkPacket::operator<<(std::time_t src)
+{
+ *this << (u64) src;
+ return *this;
+}
+
NetworkPacket& NetworkPacket::operator<<(float src)
{
checkDataSize(4);
return *this;
}
+NetworkPacket& NetworkPacket::operator>>(std::time_t& dst)
+{
+ checkReadOffset(m_read_offset, 8);
+
+ dst = readU64(&m_data[m_read_offset]);
+
+ m_read_offset += 8;
+ return *this;
+}
+
NetworkPacket& NetworkPacket::operator>>(float& dst)
{
checkReadOffset(m_read_offset, 4);