65 std::string httpUpgradeInstallLibdir = HTTP_UPGRADE_INSTALL_LIBDIR;
68 if (
const char* httpUpgradeInstallLibdirEnv = std::getenv(
"HTTP_UPGRADE_INSTALL_LIBDIR")) {
69 LOG(WARNING) <<
"HTTP upgrade: Overriding http upgrade library dir";
70 httpUpgradeInstallLibdir = std::string(httpUpgradeInstallLibdirEnv);
74 return load(socketContextUpgradeName,
75 httpUpgradeInstallLibdir +
"/libsnodec-" + socketContextUpgradeName +
"-server.so." SOVERSION,
76 socketContextUpgradeName +
"ServerSocketContextUpgradeFactory");
86 SocketContextUpgradeFactory* socketContextUpgradeFactory =
nullptr;
88 std::string upgradeContextNames = req
.get("upgrade");
90 while (!upgradeContextNames.empty() && socketContextUpgradeFactory ==
nullptr) {
91 std::string upgradeContextName;
92 std::string upgradeContextVersion;
100 socketContextUpgradeFactory =
select(upgradeContextName
);
103 if (socketContextUpgradeFactory !=
nullptr) {
107 return socketContextUpgradeFactory;
SocketContextUpgradeFactory * select(const std::string &socketContextUpgradeName)
void prepare(Request &request, Response &response)
SocketContextUpgradeFactory * select(Request &req, Response &res) override
static SocketContextUpgradeFactorySelector * instance()
SocketContextUpgradeFactory * load(const std::string &socketContextUpgradeName) override