mirror of https://github.com/oxen-io/lokinet
Add specialized subclass of Router for Hive
parent
2b2c41fdf6
commit
84c83a2400
@ -0,0 +1,16 @@
|
||||
#include <tooling/hive_context.hpp>
|
||||
|
||||
#include <tooling/hive_router.hpp>
|
||||
|
||||
namespace tooling
|
||||
{
|
||||
std::unique_ptr<llarp::AbstractRouter>
|
||||
HiveContext::makeRouter(
|
||||
std::shared_ptr<llarp::thread::ThreadPool> worker,
|
||||
llarp_ev_loop_ptr netloop,
|
||||
std::shared_ptr<llarp::Logic> logic)
|
||||
{
|
||||
return std::make_unique<HiveRouter>(worker, netloop, logic);
|
||||
}
|
||||
|
||||
} // namespace tooling
|
@ -0,0 +1,18 @@
|
||||
#pragma once
|
||||
|
||||
#include <llarp.hpp>
|
||||
|
||||
namespace tooling
|
||||
{
|
||||
/// HiveContext is a subclass of llarp::Context which allows RouterHive to
|
||||
/// perform custom behavior which might be undesirable in production code.
|
||||
struct HiveContext : public llarp::Context
|
||||
{
|
||||
std::unique_ptr<llarp::AbstractRouter>
|
||||
makeRouter(
|
||||
std::shared_ptr<llarp::thread::ThreadPool> worker,
|
||||
llarp_ev_loop_ptr netloop,
|
||||
std::shared_ptr<llarp::Logic> logic) override;
|
||||
};
|
||||
|
||||
} // namespace tooling
|
@ -0,0 +1,31 @@
|
||||
#include <tooling/hive_router.hpp>
|
||||
|
||||
namespace tooling
|
||||
{
|
||||
HiveRouter::HiveRouter(
|
||||
std::shared_ptr<llarp::thread::ThreadPool> worker,
|
||||
llarp_ev_loop_ptr netloop,
|
||||
std::shared_ptr<llarp::Logic> logic)
|
||||
: Router(worker, netloop, logic)
|
||||
{
|
||||
}
|
||||
|
||||
bool
|
||||
HiveRouter::disableGossipingRC_TestingOnly()
|
||||
{
|
||||
return m_disableGossiping;
|
||||
}
|
||||
|
||||
void
|
||||
HiveRouter::disableGossiping()
|
||||
{
|
||||
m_disableGossiping = false;
|
||||
}
|
||||
|
||||
void
|
||||
HiveRouter::enableGossiping()
|
||||
{
|
||||
m_disableGossiping = true;
|
||||
}
|
||||
|
||||
} // namespace tooling
|
@ -0,0 +1,34 @@
|
||||
#pragma once
|
||||
|
||||
#include <router/router.hpp>
|
||||
|
||||
namespace tooling
|
||||
{
|
||||
/// HiveRouter is a subclass of Router which overrides specific behavior in
|
||||
/// order to perform testing-related functions. It exists largely to prevent
|
||||
/// this behavior (which may often be "dangerous") from leaking into release
|
||||
/// code.
|
||||
struct HiveRouter : public llarp::Router
|
||||
{
|
||||
HiveRouter(
|
||||
std::shared_ptr<llarp::thread::ThreadPool> worker,
|
||||
llarp_ev_loop_ptr netloop,
|
||||
std::shared_ptr<llarp::Logic> logic);
|
||||
|
||||
virtual ~HiveRouter() = default;
|
||||
|
||||
/// Override logic to prevent base Router class from gossiping its RC.
|
||||
virtual bool
|
||||
disableGossipingRC_TestingOnly() override;
|
||||
|
||||
void
|
||||
disableGossiping();
|
||||
|
||||
void
|
||||
enableGossiping();
|
||||
|
||||
protected:
|
||||
bool m_disableGossiping = false;
|
||||
};
|
||||
|
||||
} // namespace tooling
|
Loading…
Reference in New Issue