+Input::Input(const InputProto &serialized)
+ : state(State(serialized.state())),
+ stream_id(serialized.stream_id()),
+ url(serialized.url()),
+ request(serialized.request()),
+ request_bytes_sent(serialized.request_bytes_sent()),
+ response(serialized.response()),
+ has_metacube_header(serialized.has_metacube_header()),
+ sock(serialized.sock())
+{
+ pending_data.resize(serialized.pending_data().size());
+ memcpy(&pending_data[0], serialized.pending_data().data(), serialized.pending_data().size());
+
+ parse_url(url, &host, &port, &path); // Don't care if it fails.
+}
+
+InputProto Input::serialize() const
+{
+ InputProto serialized;
+ serialized.set_state(state);
+ serialized.set_stream_id(stream_id);
+ serialized.set_url(url);
+ serialized.set_request(request);
+ serialized.set_request_bytes_sent(request_bytes_sent);
+ serialized.set_response(response);
+ serialized.set_pending_data(string(pending_data.begin(), pending_data.end()));
+ serialized.set_has_metacube_header(has_metacube_header);
+ serialized.set_sock(sock);
+ return serialized;
+}
+