#pragma once

#include "slp.hpp"
#include "slp_meta.hpp"

#include <sys/types.h>
#include <systemd/sd-bus.h>
#include <systemd/sd-daemon.h>
#include <systemd/sd-event.h>

#include <iostream>
#include <string>

namespace slp
{

namespace udp
{
/** General udp server which waits for the POLLIN event
    on the port and calls the call back once it gets the event.
    usage would be create the server with the port and the call back
    and call the run method.
 */
class Server
{
  public:
    Server() : Server(slp::PORT, nullptr) {};

    Server(uint16_t port, sd_event_io_handler_t cb) : port(port), callme(cb) {};

    Server(const Server&) = delete;
    Server& operator=(const Server&) = delete;
    Server(Server&&) = default;
    Server& operator=(Server&&) = default;

    uint16_t port;
    sd_event_io_handler_t callme;

    int run();
};
} // namespace udp
} // namespace slp
