From 3e4e70da20ed6ac7bd26fd214d4ac9a8449b0b0a Mon Sep 17 00:00:00 2001 From: Alex Hultman Date: Sun, 10 Feb 2019 01:22:24 +0100 Subject: [PATCH] Make it compile --- src/WebSocketExtensions.h | 110 +++++++++++++++++++------------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/src/WebSocketExtensions.h b/src/WebSocketExtensions.h index 4de60c2..7be66dc 100644 --- a/src/WebSocketExtensions.h +++ b/src/WebSocketExtensions.h @@ -39,61 +39,6 @@ enum ExtensionTokens { TOK_CLIENT_MAX_WINDOW_BITS = 2348 }; -template -class ExtensionsNegotiator { -protected: - int options; - -public: - ExtensionsNegotiator(int wantedOptions) { - options = wantedOptions; - } - - std::string generateOffer() { - std::string extensionsOffer; - if (options & Options::PERMESSAGE_DEFLATE) { - extensionsOffer += "permessage-deflate"; - - if (options & Options::CLIENT_NO_CONTEXT_TAKEOVER) { - extensionsOffer += "; client_no_context_takeover"; - } - - /* It is questionable sending this improves anything */ - /*if (options & Options::SERVER_NO_CONTEXT_TAKEOVER) { - extensionsOffer += "; server_no_context_takeover"; - }*/ - } - - return extensionsOffer; - } - - void readOffer(std::string_view offer) { - if (isServer) { - ExtensionsParser extensionsParser(offer.data(), offer.length()); - if ((options & PERMESSAGE_DEFLATE) && extensionsParser.perMessageDeflate) { - if (extensionsParser.clientNoContextTakeover || (options & CLIENT_NO_CONTEXT_TAKEOVER)) { - options |= CLIENT_NO_CONTEXT_TAKEOVER; - } - - /* We leave this option for us to read even if the client did not send it */ - if (extensionsParser.serverNoContextTakeover) { - options |= SERVER_NO_CONTEXT_TAKEOVER; - }/* else { - options &= ~SERVER_NO_CONTEXT_TAKEOVER; - }*/ - } else { - options &= ~PERMESSAGE_DEFLATE; - } - } else { - // todo! - } - } - - int getNegotiatedOptions() { - return options; - } -}; - class ExtensionsParser { private: int *lastInteger = nullptr; @@ -156,6 +101,61 @@ public: } }; +template +class ExtensionsNegotiator { +protected: + int options; + +public: + ExtensionsNegotiator(int wantedOptions) { + options = wantedOptions; + } + + std::string generateOffer() { + std::string extensionsOffer; + if (options & Options::PERMESSAGE_DEFLATE) { + extensionsOffer += "permessage-deflate"; + + if (options & Options::CLIENT_NO_CONTEXT_TAKEOVER) { + extensionsOffer += "; client_no_context_takeover"; + } + + /* It is questionable sending this improves anything */ + /*if (options & Options::SERVER_NO_CONTEXT_TAKEOVER) { + extensionsOffer += "; server_no_context_takeover"; + }*/ + } + + return extensionsOffer; + } + + void readOffer(std::string_view offer) { + if (isServer) { + ExtensionsParser extensionsParser(offer.data(), offer.length()); + if ((options & PERMESSAGE_DEFLATE) && extensionsParser.perMessageDeflate) { + if (extensionsParser.clientNoContextTakeover || (options & CLIENT_NO_CONTEXT_TAKEOVER)) { + options |= CLIENT_NO_CONTEXT_TAKEOVER; + } + + /* We leave this option for us to read even if the client did not send it */ + if (extensionsParser.serverNoContextTakeover) { + options |= SERVER_NO_CONTEXT_TAKEOVER; + }/* else { + options &= ~SERVER_NO_CONTEXT_TAKEOVER; + }*/ + } else { + options &= ~PERMESSAGE_DEFLATE; + } + } else { + // todo! + } + } + + int getNegotiatedOptions() { + return options; + } +}; + } #endif // WEBSOCKETEXTENSIONS_H