dd64389d73557aeefc0bb68cfed5ffe7d401d66a
[senf.git] / Examples / UDPClientServer / udpServer.cc
1 // Custom includes
2 #include <string>
3 #include <senf/Socket/Protocols/INet.hh>
4 #include <senf/Scheduler/Scheduler.hh>
5 #include <senf/Utils/membind.hh>
6
7 class Server
8 {
9     senf::UDPv4ClientSocketHandle serverSock;
10
11 public:
12     Server(senf::INet4Address const & host, unsigned int port)
13         : serverSock(senf::INet4SocketAddress(host, port)) {}
14
15     void run()
16     {
17         senf::Scheduler::instance().add(
18                 serverSock,
19                 senf::membind(&Server::readFromClient, this),
20                 senf::Scheduler::EV_READ);
21         senf::Scheduler::instance().process();
22     }
23
24 private:
25     void readFromClient(senf::Scheduler::EventId event)
26     {
27         std::string data (serverSock.read());
28         std::cout << "> " << data<<std::endl ;
29     }
30 };
31
32 int main(int argc, char const * argv[])
33 {
34     try {
35         Server testSock(senf::INet4Address::Loopback, 4243);
36         testSock.run();
37     }
38
39     catch (std::exception const & ex) {
40         std::cerr << senf::prettyName(typeid(ex)) << ": " << ex.what() << "\n";
41     }
42     return 0;
43 }