+Stream::Stream(const string &stream_id)
+ : stream_id(stream_id),
+ data(new char[BACKLOG_SIZE]),
+ data_size(0)
+{
+ memset(data, 0, BACKLOG_SIZE);
+}
+
+Stream::~Stream()
+{
+ delete[] data;
+}
+
+Stream::Stream(const StreamProto &serialized)
+ : stream_id(serialized.stream_id()),
+ header(serialized.header()),
+ data(new char[BACKLOG_SIZE]),
+ data_size(serialized.data_size())
+{
+ assert(serialized.data().size() == BACKLOG_SIZE);
+ memcpy(data, serialized.data().data(), BACKLOG_SIZE);
+}
+
+StreamProto Stream::serialize() const
+{
+ StreamProto serialized;
+ serialized.set_header(header);
+ serialized.set_data(string(data, data + BACKLOG_SIZE));
+ serialized.set_data_size(data_size);
+ serialized.set_stream_id(stream_id);
+ return serialized;
+}
+