2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
42#include "web/websocket/client/SubProtocolFactorySelector.h"
44#include "utils/Config.h"
45#include "web/websocket/SubProtocolFactory.h"
46#include "web/websocket/SubProtocolFactorySelector.hpp"
48#ifndef DOXYGEN_SHOULD_SKIP_THIS
51#include "log/Logger.h"
65 return &subProtocolFactorySelector;
76 const std::string websocketSubprotocolLibraryFile =
"libsnodec-websocket-" + subProtocolName +
"-client.so." SOVERSION;
77 const std::string websocketSubprotocolFunctionName = subProtocolName +
"ClientSubProtocolFactory";
79 std::string websocketSubprotocolInstallLibdir = WEBSOCKET_SUBPROTOCO_INSTALL_LIBDIR;
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);
90 if (std::filesystem::is_directory(websocketSubprotocolInstallLibdir +
"/" + utils::Config::getApplicationName())) {
91 subProtocolFactory = Super
::load(subProtocolName
,
92 websocketSubprotocolInstallLibdir +
"/" + utils::Config::getApplicationName() +
"/" +
93 websocketSubprotocolLibraryFile
,
94 websocketSubprotocolFunctionName
);
96 subProtocolFactory = Super
::load(subProtocolName
,
97 websocketSubprotocolInstallLibdir +
"/" + websocketSubprotocolLibraryFile
,
98 websocketSubprotocolFunctionName
);
101 return subProtocolFactory;
static SubProtocolFactory * load(const std::string &subProtocolName, const std::string &subProtocolLibraryFile, const std::string &subProtocolFactoryFunctionName)
static void allowDlOpen()
SubProtocolFactory * load(const std::string &subProtocolName) override
static SubProtocolFactorySelector * instance()
~SubProtocolFactorySelector() override