X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=input.cpp;fp=input.cpp;h=58d319f10428d74435bd8d79fb35817785f63eb1;hb=e20ad47985bdda71b7b58c26932dad9a3a50c066;hp=8307819437d687307d107b370f52e017d87be2fc;hpb=fbfb955ee7233030357ec32c0d613f9279700d70;p=cubemap diff --git a/input.cpp b/input.cpp index 8307819..58d319f 100644 --- a/input.cpp +++ b/input.cpp @@ -22,6 +22,7 @@ #include "server.h" #include "serverpool.h" #include "parse.h" +#include "state.pb.h" using namespace std; @@ -79,6 +80,37 @@ Input::Input(const string &stream_id, const string &url) { } +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; +} + void Input::run() { should_stop = false;