mirror of https://github.com/oxen-io/lokinet
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1021 B
C++
43 lines
1021 B
C++
5 years ago
|
#ifndef LLARP_LINK_FACTORY_HPP
|
||
|
#define LLARP_LINK_FACTORY_HPP
|
||
|
#include <util/string_view.hpp>
|
||
|
#include <functional>
|
||
|
|
||
|
#include <link/server.hpp>
|
||
|
|
||
|
namespace llarp
|
||
|
{
|
||
|
/// LinkFactory is responsible for returning std::functions that create the
|
||
|
/// link layer types
|
||
|
struct LinkFactory
|
||
|
{
|
||
|
enum class LinkType
|
||
|
{
|
||
|
eLinkUTP,
|
||
|
eLinkIWP,
|
||
|
eLinkMempipe,
|
||
|
eLinkUnknown
|
||
|
};
|
||
|
|
||
|
using Factory = std::function< LinkLayer_ptr(
|
||
|
const SecretKey&, GetRCFunc, LinkMessageHandler, SignBufferFunc,
|
||
|
SessionEstablishedHandler, SessionRenegotiateHandler, TimeoutHandler,
|
||
|
SessionClosedHandler) >;
|
||
|
|
||
|
/// get link type by name string
|
||
|
/// if invalid returns eLinkUnspec
|
||
|
static LinkType
|
||
|
TypeFromName(string_view name);
|
||
|
|
||
|
/// turns a link type into a string representation
|
||
|
static std::string
|
||
|
NameFromType(LinkType t);
|
||
|
|
||
|
/// obtain a link factory of a certain type
|
||
|
static Factory
|
||
|
Obtain(LinkType t, bool permitInbound);
|
||
|
};
|
||
|
|
||
|
} // namespace llarp
|
||
|
|
||
|
#endif
|