]> git.sesse.net Git - cubemap/blobdiff - serverpool.cpp
Fix incorrect struct/class in forward declares (found by Clang).
[cubemap] / serverpool.cpp
index cf6933ccda181e23f4f7f7d85e353ec11b7d805a..e47c8d567da2f847b1f7d39301074232480fa7a8 100644 (file)
@@ -1,4 +1,5 @@
 #include "serverpool.h"
+#include "state.pb.h"
 
 using namespace std;
 
@@ -13,6 +14,25 @@ ServerPool::~ServerPool()
 {
        delete[] servers;
 }
+       
+CubemapStateProto ServerPool::serialize()
+{
+       CubemapStateProto state;
+
+       for (int i = 0; i < num_servers; ++i) {
+                CubemapStateProto local_state = servers[i].serialize();
+
+               // The stream state should be identical between the servers, so we only store it once.
+               if (i == 0) {
+                       state.mutable_streams()->MergeFrom(local_state.streams());
+               }
+               for (int j = 0; j < local_state.clients_size(); ++j) {
+                       state.add_clients()->MergeFrom(local_state.clients(j));
+               }
+        }
+
+       return state;
+}
 
 void ServerPool::add_client(int sock)
 {
@@ -24,10 +44,10 @@ void ServerPool::add_client_from_serialized(const ClientProto &client)
        servers[clients_added++ % num_servers].add_client_from_serialized(client);
 }
 
-void ServerPool::add_stream(const std::string &stream_id)
+void ServerPool::add_stream(const std::string &stream_id, size_t backlog_size)
 {
        for (int i = 0; i < num_servers; ++i) {
-               servers[i].add_stream(stream_id);
+               servers[i].add_stream(stream_id, backlog_size);
        }
 }