void NetMessage::EnsureWritableBytes(size_t size) { if (Writeable() < size) { MakeSpace(size); } assert(Writeable() >= size); }
void NetMessage::MakeSpace(size_t size) { if (Writeable() + Prependable() < size) { if (!IsDynamic()) { SetDynamic(); } dynamic_data_->resize(writer_pos_ + size); } else { const size_t readable_size = Readable(); if (!IsDynamic()) { memcpy(static_data_.data(), static_data_.data() + reader_pos_, readable_size); } else { memcpy(dynamic_data_->data(), dynamic_data_->data() + reader_pos_, readable_size); } reader_pos_ = 0; writer_pos_ = readable_size; assert(readable_size == Readable()); } }
void NetMessage::HasWritten(size_t size) { assert(Writeable() >= size); writer_pos_ += size; }
inline size_t WriteableBytes() { return Writeable() ? m_buffer_len - m_write_idx : 0; }