]> git.tdb.fi Git - xinema.git/blob - source/networkinterface.h
fbb66b9fa8fb2e710bccf3484cdecebe1e34e241
[xinema.git] / source / networkinterface.h
1 #ifndef NETWORKINTERFACE_H_
2 #define NETWORKINTERFACE_H_
3
4 #include <msp/core/thread.h>
5 #include <msp/io/eventdispatcher.h>
6 #include <msp/io/pipe.h>
7 #include <msp/net/streamserversocket.h>
8
9 class Client;
10 class Xinema;
11
12 class NetworkInterface
13 {
14 private:
15         class NetworkThread: public Msp::Thread
16         {
17         private:
18                 NetworkInterface &network;
19                 Msp::IO::Pipe wakeup_pipe;
20                 bool done;
21
22         public:
23                 NetworkThread(NetworkInterface &);
24
25                 void terminate();
26
27         private:
28                 virtual void main();
29         };
30
31         Xinema &xinema;
32         Msp::Net::StreamServerSocket *server_sock;
33         Msp::IO::EventDispatcher event_disp;
34         NetworkThread *thread;
35         std::list<Client *> clients;
36
37 public:
38         NetworkInterface(Xinema &);
39         ~NetworkInterface();
40
41 private:
42         void connection_available();
43 };
44
45 #endif