}
}
-void Server::run()
-{
- should_stop = false;
-
- // Joinable is already the default, but it's good to be certain.
- pthread_attr_t attr;
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
- pthread_create(&worker_thread, &attr, Server::do_work_thunk, this);
-}
-
-void Server::stop()
-{
- {
- MutexLock lock(&mutex);
- should_stop = true;
- }
-
- pthread_kill(worker_thread, SIGHUP);
- if (pthread_join(worker_thread, NULL) == -1) {
- perror("pthread_join");
- exit(1);
- }
-}
-
vector<ClientStats> Server::get_client_stats() const
{
vector<ClientStats> ret;
return ret;
}
-void *Server::do_work_thunk(void *arg)
-{
- Server *server = static_cast<Server *>(arg);
- server->do_work();
- return NULL;
-}
-
void Server::do_work()
{
for ( ;; ) {