+#include "serverpool.h"
+
+using namespace std;
+
+ServerPool::ServerPool(int size)
+ : servers(new Server[size]),
+ num_servers(size),
+ clients_added(0)
+{
+}
+
+ServerPool::~ServerPool()
+{
+ delete[] servers;
+}
+
+void ServerPool::add_client(int sock)
+{
+ servers[clients_added++ % num_servers].add_client(sock);
+}
+
+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)
+{
+ for (int i = 0; i < num_servers; ++i) {
+ servers[i].add_stream(stream_id);
+ }
+}
+
+void ServerPool::add_stream_from_serialized(const StreamProto &stream)
+{
+ for (int i = 0; i < num_servers; ++i) {
+ servers[i].add_stream_from_serialized(stream);
+ }
+}
+
+void ServerPool::set_header(const std::string &stream_id, const std::string &header)
+{
+ for (int i = 0; i < num_servers; ++i) {
+ servers[i].set_header(stream_id, header);
+ }
+}
+
+void ServerPool::add_data(const std::string &stream_id, const char *data, size_t bytes)
+{
+ for (int i = 0; i < num_servers; ++i) {
+ servers[i].add_data(stream_id, data, bytes);
+ }
+}
+
+void ServerPool::run()
+{
+ for (int i = 0; i < num_servers; ++i) {
+ servers[i].run();
+ }
+}