1 #include <msp/net/inet6.h>
2 #include <msp/net/resolve.h>
4 #include "networkinterface.h"
9 NetworkInterface::NetworkInterface(Xinema &x):
12 Net::SockAddr *addr = Net::resolve("::", "34588", Net::INET6);
13 server_sock = new Net::StreamServerSocket(addr->get_family());
14 server_sock->listen(*addr);
17 server_sock->signal_data_available.connect(sigc::mem_fun(this, &NetworkInterface::connection_available));
19 event_disp.add(*server_sock);
21 thread = new NetworkThread(*this);
24 NetworkInterface::~NetworkInterface()
31 void NetworkInterface::connection_available()
33 Net::StreamSocket *sock = server_sock->accept();
34 event_disp.add(*sock);
35 clients.push_back(new Client(xinema, sock));
39 NetworkInterface::NetworkThread::NetworkThread(NetworkInterface &n):
43 network.event_disp.add(wakeup_pipe);
47 void NetworkInterface::NetworkThread::terminate()
54 void NetworkInterface::NetworkThread::main()
58 network.event_disp.tick();
60 for(list<Client *>::iterator i=network.clients.begin(); i!=network.clients.end(); )
65 network.clients.erase(i++);