llarp/service/context.hpp

Namespaces

Name
llarp
[crypto.hpp]
llarp::service

Classes

Name
struct llarp::service::Context
holds all the hidden service endpoints we own this should be refactored (removed entirely...?) now that lokinet only supports one endpoint per instance

Source code

#pragma once

#include <llarp/handlers/tun.hpp>
#include <llarp/net/net.hpp>
#include <llarp/config/config.hpp>
#include "endpoint.hpp"

#include <unordered_map>

namespace llarp
{
  namespace service
  {
    struct Context
    {
      explicit Context(AbstractRouter* r);
      ~Context();

      void
      Tick(llarp_time_t now);

      bool
      StopAll();

      bool
      hasEndpoints();

      void
      ForEachService(std::function<bool(const std::string&, const Endpoint_ptr&)> visit) const;

      void
      Pump();

      void
      AddEndpoint(const Config& conf, bool autostart = false);

      void
      InjectEndpoint(std::string name, std::shared_ptr<Endpoint> ep);

      bool
      RemoveEndpoint(const std::string& name);

      Endpoint_ptr
      GetEndpointByName(const std::string& name) const;

      Endpoint_ptr
      GetDefault() const
      {
        return GetEndpointByName("default");
      }

      bool
      StartAll();

     private:
      AbstractRouter* const m_Router;
      std::unordered_map<std::string, std::shared_ptr<Endpoint>> m_Endpoints;
      std::list<std::shared_ptr<Endpoint>> m_Stopped;
    };
  }  // namespace service
}  // namespace llarp

Updated on 2026-01-10 at 22:49:45 +0000