xref: /openbmc/slpd-lite/slp_server.hpp (revision 309ac445)
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