]> git.sesse.net Git - cubemap/blobdiff - serverpool.cpp
Even more missing unistd.h includes.
[cubemap] / serverpool.cpp
index 09fe4355fbb4b6fcdc2748c473838cb2f9a2fa84..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)
 {
@@ -59,6 +79,13 @@ void ServerPool::run()
        }
 }
        
+void ServerPool::stop()
+{
+       for (int i = 0; i < num_servers; ++i) {
+               servers[i].stop();
+       }
+}
+       
 vector<ClientStats> ServerPool::get_client_stats() const
 {
        vector<ClientStats> ret;