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

#include <SubProtocolFactorySelector.h>

Inheritance diagram for web::websocket::client::SubProtocolFactorySelector:
Collaboration diagram for web::websocket::client::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::client::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::client::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::client::SubProtocol > >
enum  Role
 
using SubProtocolFactory = web::websocket::SubProtocolFactory< web::websocket::client::SubProtocol >
 
- Protected Member Functions inherited from web::websocket::SubProtocolFactorySelector< web::websocket::SubProtocolFactory< web::websocket::client::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::client::SubProtocol > >
static SubProtocolFactoryload (const std::string &subProtocolName, const std::string &subProtocolLibraryFile, const std::string &subProtocolFactoryFunctionName)
 

Detailed Description

Definition at line 64 of file SubProtocolFactorySelector.h.

Member Typedef Documentation

◆ Super

Constructor & Destructor Documentation

◆ SubProtocolFactorySelector() [1/2]

web::websocket::client::SubProtocolFactorySelector::SubProtocolFactorySelector ( const SubProtocolFactorySelector )
delete

◆ ~SubProtocolFactorySelector()

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

◆ SubProtocolFactorySelector() [2/2]

web::websocket::client::SubProtocolFactorySelector::SubProtocolFactorySelector ( )
privatedefault

Member Function Documentation

◆ allowDlOpen()

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

Definition at line 71 of file SubProtocolFactorySelector.cpp.

71 {
72 instance()->Super::allowDlOpen();
73 }

References web::websocket::SubProtocolFactorySelector< SubProtocolFactoryT >::allowDlOpen(), and instance().

Here is the call graph for this function:

◆ instance()

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

Definition at line 62 of file SubProtocolFactorySelector.cpp.

62 {
63 static SubProtocolFactorySelector subProtocolFactorySelector;
64
65 return &subProtocolFactorySelector;
66 }

Referenced by allowDlOpen(), link(), web::websocket::client::SocketContextUpgrade::loadSubProtocol(), and web::websocket::client::SocketContextUpgrade::~SocketContextUpgrade().

Here is the caller graph for this function:

◆ link()

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

Definition at line 82 of file SubProtocolFactorySelector.h.

82 {
83 SubProtocolFactorySelector::instance()->Super::link(subProtocolName, getSubProtocolFactory);
84 }

References instance().

Here is the call graph for this function:

◆ load()

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

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

Definition at line 75 of file SubProtocolFactorySelector.cpp.

75 {
76 const std::string websocketSubprotocolLibraryFile = "libsnodec-websocket-" + subProtocolName + "-client.so." SOVERSION;
77 const std::string websocketSubprotocolFunctionName = subProtocolName + "ClientSubProtocolFactory";
78
79 std::string websocketSubprotocolInstallLibdir = WEBSOCKET_SUBPROTOCO_INSTALL_LIBDIR;
80
81#if !defined(NDEBUG)
82 if (const char* websocketSubprotocolInstallLibdirEnv = std::getenv("WEBSOCKET_SUBPROTOCOL_INSTALL_LIBDIR")) {
83 LOG(WARNING) << "WebSocket: Overriding websocket subprotocol library dir";
84 websocketSubprotocolInstallLibdir = std::string(websocketSubprotocolInstallLibdirEnv);
85 }
86#endif
87
88 SubProtocolFactorySelector::SubProtocolFactory* subProtocolFactory = nullptr;
89
90 if (std::filesystem::is_directory(websocketSubprotocolInstallLibdir + "/" + utils::Config::getApplicationName())) {
91 subProtocolFactory = Super::load(subProtocolName,
92 websocketSubprotocolInstallLibdir + "/" + utils::Config::getApplicationName() + "/" +
93 websocketSubprotocolLibraryFile,
94 websocketSubprotocolFunctionName);
95 } else {
96 subProtocolFactory = Super::load(subProtocolName,
97 websocketSubprotocolInstallLibdir + "/" + websocketSubprotocolLibraryFile,
98 websocketSubprotocolFunctionName);
99 }
100
101 return subProtocolFactory;
102 }
static std::string getApplicationName()
Definition Config.cpp:962

References web::websocket::SubProtocolFactorySelector< SubProtocolFactoryT >::load().

Here is the call graph for this function:

◆ operator=()

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

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