| #pragma once | 
 |  | 
 | #include "types.hpp" | 
 |  | 
 | #include <systemd/sd-event.h> | 
 |  | 
 | namespace phosphor | 
 | { | 
 | namespace network | 
 | { | 
 | namespace rtnetlink | 
 | { | 
 |  | 
 | constexpr auto BUFSIZE = 4096; | 
 |  | 
 | /** General rtnetlink server which waits for the POLLIN event | 
 |     and calls the  call back once it gets the event. | 
 |     Usage would be create the server with the  call back | 
 |     and call the run method. | 
 |  */ | 
 |  | 
 | class Server | 
 | { | 
 |  | 
 |     public: | 
 |  | 
 |         /** @brief Constructor | 
 |          * | 
 |          *  @param[in] event - Unique ptr reference to sd_event. | 
 |          */ | 
 |  | 
 |         Server(EventPtr& event): | 
 |             eventPtr(event) {}; | 
 |  | 
 |         Server(const Server&) = delete; | 
 |         Server& operator=(const Server&) = delete; | 
 |         Server(Server&&) = default; | 
 |         Server& operator=(Server &&) = default; | 
 |  | 
 |         /** @brief Initialise the event loop and add the handler for incoming | 
 |          *         RTNETLINK events. | 
 |          * | 
 |          *  @return EXIT_SUCCESS on success and EXIT_FAILURE on failure. | 
 |          */ | 
 |         int run(); | 
 |  | 
 |     private: | 
 |         /** @brief reference to sd_event wrapped in unique_ptr */ | 
 |         EventPtr& eventPtr; | 
 |  | 
 | }; | 
 |  | 
 | } //namespace rtnetlink | 
 | } //namespce network | 
 | } //namespace phosphor |