]> git.sesse.net Git - cubemap/blobdiff - serverpool.cpp
Move some serialization logic into ServerPool, where it belongs.
[cubemap] / serverpool.cpp
index cf6933ccda181e23f4f7f7d85e353ec11b7d805a..9f1a7280662a68f35fb40cb8230af9cb75384978 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)
 {