diff options
Diffstat (limited to 'src/network/packet.h')
| -rw-r--r-- | src/network/packet.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/network/packet.h b/src/network/packet.h index 026271701..94b351ab1 100644 --- a/src/network/packet.h +++ b/src/network/packet.h | |||
| @@ -115,6 +115,12 @@ private: | |||
| 115 | 115 | ||
| 116 | template <typename T> | 116 | template <typename T> |
| 117 | Packet& Packet::operator>>(std::vector<T>& out_data) { | 117 | Packet& Packet::operator>>(std::vector<T>& out_data) { |
| 118 | // First extract the size | ||
| 119 | u32 size = 0; | ||
| 120 | *this >> size; | ||
| 121 | out_data.resize(size); | ||
| 122 | |||
| 123 | // Then extract the data | ||
| 118 | for (std::size_t i = 0; i < out_data.size(); ++i) { | 124 | for (std::size_t i = 0; i < out_data.size(); ++i) { |
| 119 | T character = 0; | 125 | T character = 0; |
| 120 | *this >> character; | 126 | *this >> character; |
| @@ -135,6 +141,10 @@ Packet& Packet::operator>>(std::array<T, S>& out_data) { | |||
| 135 | 141 | ||
| 136 | template <typename T> | 142 | template <typename T> |
| 137 | Packet& Packet::operator<<(const std::vector<T>& in_data) { | 143 | Packet& Packet::operator<<(const std::vector<T>& in_data) { |
| 144 | // First insert the size | ||
| 145 | *this << static_cast<u32>(in_data.size()); | ||
| 146 | |||
| 147 | // Then insert the data | ||
| 138 | for (std::size_t i = 0; i < in_data.size(); ++i) { | 148 | for (std::size_t i = 0; i < in_data.size(); ++i) { |
| 139 | *this << in_data[i]; | 149 | *this << in_data[i]; |
| 140 | } | 150 | } |