1*309ac445SRatan Gupta #pragma once 2*309ac445SRatan Gupta 3*309ac445SRatan Gupta #include <iostream> 4*309ac445SRatan Gupta #include <string> 5*309ac445SRatan Gupta #include <sys/types.h> 6*309ac445SRatan Gupta #include <systemd/sd-bus.h> 7*309ac445SRatan Gupta #include <systemd/sd-daemon.h> 8*309ac445SRatan Gupta #include <systemd/sd-event.h> 9*309ac445SRatan Gupta 10*309ac445SRatan Gupta #include "slp_meta.hpp" 11*309ac445SRatan Gupta #include "slp.hpp" 12*309ac445SRatan Gupta 13*309ac445SRatan Gupta namespace slp 14*309ac445SRatan Gupta { 15*309ac445SRatan Gupta 16*309ac445SRatan Gupta namespace udp 17*309ac445SRatan Gupta { 18*309ac445SRatan Gupta /** General udp server which waits for the POLLIN event 19*309ac445SRatan Gupta on the port and calls the call back once it gets the event. 20*309ac445SRatan Gupta usage would be create the server with the port and the call back 21*309ac445SRatan Gupta and call the run method. 22*309ac445SRatan Gupta */ 23*309ac445SRatan Gupta class Server 24*309ac445SRatan Gupta { 25*309ac445SRatan Gupta 26*309ac445SRatan Gupta public: 27*309ac445SRatan Gupta 28*309ac445SRatan Gupta Server(): Server(slp::PORT, nullptr) {}; 29*309ac445SRatan Gupta 30*309ac445SRatan Gupta Server(uint16_t port, sd_event_io_handler_t cb): 31*309ac445SRatan Gupta port(port), 32*309ac445SRatan Gupta callme(cb) {}; 33*309ac445SRatan Gupta 34*309ac445SRatan Gupta Server(const Server&) = delete; 35*309ac445SRatan Gupta Server& operator=(const Server&) = delete; 36*309ac445SRatan Gupta Server(Server&&) = default; 37*309ac445SRatan Gupta Server& operator=(Server &&) = default; 38*309ac445SRatan Gupta 39*309ac445SRatan Gupta uint16_t port; 40*309ac445SRatan Gupta sd_event_io_handler_t callme; 41*309ac445SRatan Gupta 42*309ac445SRatan Gupta int run(); 43*309ac445SRatan Gupta 44*309ac445SRatan Gupta }; 45*309ac445SRatan Gupta }//namespce udp 46*309ac445SRatan Gupta }//namespace slp 47