#ifndef DISTRIB_H #define DISTRIB_H DISTRIB_H #include #include #include class distrib { public: distrib(); int readHostFile(const char * filename); int startServer(); int startClient(const char * server, int port); int startClients(const std::vector & client_options); int getNumClients() { return m_num_clients; } void set_data(unsigned char * data) { m_data = data; } int getTask(); int send_data(int task, unsigned char * data, int num_bytes); friend void distrib_server(distrib * the_distrib); protected: int clientConnect(const std::string & host, const std::vector & client_options); std::vector m_hosts; std::vector m_children; std::string m_servername; int m_serverport; int m_listen_socket; int m_client_socket; pthread_t m_server_thread; pthread_cond_t m_listen_cond; pthread_mutex_t m_listen_mutex; int m_num_clients; unsigned char * m_data; bool m_server; }; #endif