#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
