SNode.C
Loading...
Searching...
No Matches
web::websocket::server::SubProtocolFactorySelector Class Reference

#include <SubProtocolFactorySelector.h>

Inheritance diagram for web::websocket::server::SubProtocolFactorySelector:
Collaboration diagram for web::websocket::server::SubProtocolFactorySelector:

Public Member Functions

 SubProtocolFactorySelector (const SubProtocolFactorySelector &)=delete
 
SubProtocolFactorySelectoroperator= (const SubProtocolFactorySelector &)=delete
 
 ~SubProtocolFactorySelector () override
 
- Public Member Functions inherited from web::websocket::SubProtocolFactorySelector< web::websocket::SubProtocolFactory< web::websocket::server::SubProtocol > >
 SubProtocolFactorySelector (const SubProtocolFactorySelector &)=delete
 
SubProtocolFactorySelectoroperator= (const SubProtocolFactorySelector &)=delete
 
SubProtocolFactoryselect (const std::string &subProtocolName)
 
SubProtocolFactoryselect (const std::string &subProtocolName, Role role)
 
void unload (SubProtocolFactory *subProtocolFactory)
 

Static Public Member Functions

static SubProtocolFactorySelectorinstance ()
 
static void allowDlOpen ()
 
template<typename SubProtocolFactory >
static void link (const std::string &subProtocolName, SubProtocolFactory *(*getSubProtocolFactory)())
 

Private Types

using Super = web::websocket::SubProtocolFactorySelector<web::websocket::SubProtocolFactory<web::websocket::server::SubProtocol>>
 

Private Member Functions

SubProtocolFactoryload (const std::string &subProtocolName) override
 
 SubProtocolFactorySelector ()=default
 

Additional Inherited Members

- Public Types inherited from web::websocket::SubProtocolFactorySelector< web::websocket::SubProtocolFactory< web::websocket::server::SubProtocol > >
enum  Role
 
using SubProtocolFactory
 
- Protected Member Functions inherited from web::websocket::SubProtocolFactorySelector< web::websocket::SubProtocolFactory< web::websocket::server::SubProtocol > >
 SubProtocolFactorySelector ()=default
 
void allowDlOpen ()
 
void link (const std::string &subProtocolName, SubProtocolFactory *(*subProtocolFactory)())
 
- Static Protected Member Functions inherited from web::websocket::SubProtocolFactorySelector< web::websocket::SubProtocolFactory< web::websocket::server::SubProtocol > >
static SubProtocolFactoryload (const std::string &subProtocolName, const std::string &subProtocolLibraryFile, const std::string &subProtocolFactoryFunctionName)
 

Detailed Description

Definition at line 42 of file SubProtocolFactorySelector.h.

Member Typedef Documentation

◆ Super

Constructor & Destructor Documentation

◆ SubProtocolFactorySelector() [1/2]

web::websocket::server::SubProtocolFactorySelector::SubProtocolFactorySelector ( const SubProtocolFactorySelector & )
delete

◆ ~SubProtocolFactorySelector()

web::websocket::server::SubProtocolFactorySelector::~SubProtocolFactorySelector ( )
overridevirtual

◆ SubProtocolFactorySelector() [2/2]

web::websocket::server::SubProtocolFactorySelector::SubProtocolFactorySelector ( )
privatedefault

Member Function Documentation

◆ allowDlOpen()

void web::websocket::server::SubProtocolFactorySelector::allowDlOpen ( )
static

Definition at line 49 of file SubProtocolFactorySelector.cpp.

49 {
50 instance()->Super::allowDlOpen();
51 }

◆ instance()

SubProtocolFactorySelector * web::websocket::server::SubProtocolFactorySelector::instance ( )
static

Definition at line 40 of file SubProtocolFactorySelector.cpp.

40 {
41 static SubProtocolFactorySelector subProtocolFactorySelector;
42
43 return &subProtocolFactorySelector;
44 }

◆ link()

template<typename SubProtocolFactory >
static void web::websocket::server::SubProtocolFactorySelector::link ( const std::string & subProtocolName,
SubProtocolFactory *(* getSubProtocolFactory )() )
inlinestatic

Definition at line 60 of file SubProtocolFactorySelector.h.

60 {
61 SubProtocolFactorySelector::instance()->Super::link(subProtocolName, getSubProtocolFactory);
62 }

◆ load()

SubProtocolFactorySelector::SubProtocolFactory * web::websocket::server::SubProtocolFactorySelector::load ( const std::string & subProtocolName)
overrideprivatevirtual

Implements web::websocket::SubProtocolFactorySelector< web::websocket::SubProtocolFactory< web::websocket::server::SubProtocol > >.

Definition at line 53 of file SubProtocolFactorySelector.cpp.

53 {
54 const std::string websocketSubprotocolLibraryFile = "libsnodec-websocket-" + subProtocolName + "-server.so." SOVERSION;
55 const std::string websocketSubprotocolFunctionName = subProtocolName + "ServerSubProtocolFactory";
56
57 std::string websocketSubprotocolInstallLibdir = WEBSOCKET_SUBPROTOCO_INSTALL_LIBDIR;
58
59#if !defined(NDEBUG)
60 if (const char* websocketSubprotocolInstallLibdirEnv = std::getenv("WEBSOCKET_SUBPROTOCOL_INSTALL_LIBDIR")) {
61 LOG(WARNING) << "WebSocket: Overriding websocket subprotocol library dir";
62 websocketSubprotocolInstallLibdir = std::string(websocketSubprotocolInstallLibdirEnv);
63 }
64#endif
65
66 SubProtocolFactorySelector::SubProtocolFactory* subProtocolFactory = nullptr;
67
68 if (std::filesystem::is_directory(websocketSubprotocolInstallLibdir + "/" + utils::Config::getApplicationName())) {
69 subProtocolFactory = Super::load(subProtocolName,
70 websocketSubprotocolInstallLibdir + "/" + utils::Config::getApplicationName() + "/" +
71 websocketSubprotocolLibraryFile,
72 websocketSubprotocolFunctionName);
73 } else {
74 subProtocolFactory = Super::load(subProtocolName,
75 websocketSubprotocolInstallLibdir + "/" + websocketSubprotocolLibraryFile,
76 websocketSubprotocolFunctionName);
77 }
78
79 return subProtocolFactory;
80 }
static std::string getApplicationName()
Definition Config.cpp:939

◆ operator=()

SubProtocolFactorySelector & web::websocket::server::SubProtocolFactorySelector::operator= ( const SubProtocolFactorySelector & )
delete

The documentation for this class was generated from the following files: