src/api/transport/listener.hpp¶
Namespaces¶
| Name |
|---|
| sgns |
| sgns::api |
Classes¶
| Name | |
|---|---|
| class | sgns::api::Listener server which listens for incoming connection, accepts connections making session from socket |
| struct | sgns::api::Listener::Configuration |
Source code¶
#ifndef SUPERGENIUS_SRC_API_TRANSPORT_LISTENER_HPP
#define SUPERGENIUS_SRC_API_TRANSPORT_LISTENER_HPP
#include <boost/asio/ip/tcp.hpp>
#include <memory>
#include "api/transport/rpc_io_context.hpp"
#include "api/transport/session.hpp"
#include "singleton/IComponent.hpp"
namespace sgns::api {
class Listener : public IComponent {
protected:
using Acceptor = boost::asio::ip::tcp::acceptor;
using Endpoint = boost::asio::ip::tcp::endpoint;
using NewSessionHandler =
std::function<void(const std::shared_ptr<Session> &)>;
public:
using Context = RpcContext;
struct Configuration {
Endpoint endpoint{};
Configuration() {
endpoint.address(boost::asio::ip::address_v4::any());
endpoint.port(0);
}
};
~Listener() override = default;
virtual bool prepare() = 0;
virtual bool start() = 0;
virtual void stop() = 0;
virtual void setHandlerForNewSession(
NewSessionHandler &&on_new_session) = 0;
protected:
virtual void acceptOnce() = 0;
};
}
#endif
Updated on 2026-03-04 at 13:10:44 -0800