7 #include <sys/socket.h>
10 #include <sys/ioctl.h>
11 #include <sys/epoll.h>
19 #include "mutexlock.h"
25 pthread_mutex_init(&mutex, NULL);
27 epoll_fd = epoll_create(1024); // Size argument is ignored.
37 pthread_create(&thread, NULL, Server::do_work_thunk, this);
40 void *Server::do_work_thunk(void *arg)
42 Server *server = static_cast<Server *>(arg);
47 void Server::do_work()
50 MutexLock lock(&mutex);
51 printf("server thread running\n");
56 void Server::add_client(int sock)
58 MutexLock lock(&mutex);
60 new_client.state = Client::READING_REQUEST;
61 new_client.header_bytes_sent = 0;
62 new_client.bytes_sent = 0;
64 clients.insert(make_pair(sock, new_client));
66 // Start listening on data from this socket.
70 if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, sock, &ev) == -1) {
71 perror("epoll_ctl(EPOLL_CTL_ADD)");
76 void Server::add_stream(const string &stream_id)
81 void Server::set_header(const string &stream_id, const string &header)
84 printf("got header! %lu bytes\n", header.size());
87 void Server::add_data(const string &stream_id, const char *data, size_t bytes)