#ifndef _SERVERPOOL_H
#define _SERVERPOOL_H 1
-#include "server.h"
-
+#include <stddef.h>
+#include <string>
#include <vector>
+#include "server.h"
+#include "state.pb.h"
+
class MarkPool;
+class Server;
+struct ClientStats;
// Provides services such as load-balancing between a number of Server instances.
class ServerPool {
ServerPool(int num_servers);
~ServerPool();
- // Accessor. Only to be used in rare situations, really.
- // The ServerPool retains ownership.
- Server *get_server(int num) { return &servers[num]; }
+ // Fills streams() and clients().
+ CubemapStateProto serialize();
// Picks a server (round-robin) and allocates the given client to it.
void add_client(int sock);
void add_client_from_serialized(const ClientProto &client);
// Adds the given stream to all the servers.
- void add_stream(const std::string &stream_id);
+ void add_stream(const std::string &stream_id, size_t backlog_size);
void add_stream_from_serialized(const StreamProto &stream);
// Adds the given data to all the servers.
// Connects the given stream to the given mark pool for all the servers.
void set_mark_pool(const std::string &stream_id, MarkPool *mark_pool);
+ // Changes the given stream's backlog size on all the servers.
+ void set_backlog_size(const std::string &stream_id, size_t new_size);
+
// Starts all the servers.
void run();