| Ratan Gupta | 0f9dc1b | 2017-09-03 17:57:50 +0530 | [diff] [blame] | 1 | #pragma once | 
|  | 2 |  | 
|  | 3 | #include "types.hpp" | 
|  | 4 |  | 
|  | 5 | #include <systemd/sd-event.h> | 
|  | 6 |  | 
|  | 7 | namespace phosphor | 
|  | 8 | { | 
|  | 9 | namespace network | 
|  | 10 | { | 
|  | 11 | namespace rtnetlink | 
|  | 12 | { | 
|  | 13 |  | 
|  | 14 | constexpr auto BUFSIZE = 4096; | 
|  | 15 |  | 
|  | 16 | /** General rtnetlink server which waits for the POLLIN event | 
|  | 17 | and calls the  call back once it gets the event. | 
|  | 18 | Usage would be create the server with the  call back | 
|  | 19 | and call the run method. | 
|  | 20 | */ | 
|  | 21 |  | 
|  | 22 | class Server | 
|  | 23 | { | 
|  | 24 |  | 
|  | 25 | public: | 
|  | 26 |  | 
|  | 27 | /** @brief Constructor | 
|  | 28 | * | 
|  | 29 | *  @param[in] event - Unique ptr reference to sd_event. | 
|  | 30 | */ | 
|  | 31 |  | 
|  | 32 | Server(EventPtr& event): | 
|  | 33 | eventPtr(event) {}; | 
|  | 34 |  | 
|  | 35 | Server(const Server&) = delete; | 
|  | 36 | Server& operator=(const Server&) = delete; | 
|  | 37 | Server(Server&&) = default; | 
|  | 38 | Server& operator=(Server &&) = default; | 
|  | 39 |  | 
|  | 40 | /** @brief Initialise the event loop and add the handler for incoming | 
|  | 41 | *         RTNETLINK events. | 
|  | 42 | * | 
|  | 43 | *  @return EXIT_SUCCESS on success and EXIT_FAILURE on failure. | 
|  | 44 | */ | 
|  | 45 | int run(); | 
|  | 46 |  | 
|  | 47 | private: | 
|  | 48 | /** @brief reference to sd_event wrapped in unique_ptr */ | 
|  | 49 | EventPtr& eventPtr; | 
|  | 50 |  | 
|  | 51 | }; | 
|  | 52 |  | 
|  | 53 | } //namespace rtnetlink | 
|  | 54 | } //namespce network | 
|  | 55 | } //namespace phosphor |