diff --git a/include/protocol/protocol.hpp b/include/protocol/protocol.hpp index 49bcaf1..0736cb2 100644 --- a/include/protocol/protocol.hpp +++ b/include/protocol/protocol.hpp @@ -48,6 +48,7 @@ namespace protocol { private: handler_map_t handlers; size_t max_pattern_length; + std::string version; void send_data_line(const session_key_t& session_key, const std::string& data_line); }; diff --git a/src/protocol/protocol.cpp b/src/protocol/protocol.cpp index 2684f52..c72c418 100644 --- a/src/protocol/protocol.cpp +++ b/src/protocol/protocol.cpp @@ -38,6 +38,10 @@ namespace protocol { auto pattern = token::pattern_t(tokens, false); debug && cerr << "Received pattern " << pattern << endl; + if(tokens.size() >= 2 && tokens.at(0) == "filter") { + version = tokens.at(1); + } + auto element = handlers.find(pattern); if(element == handlers.end()) { debug && cerr << "Unknown pattern " << pattern << endl; @@ -47,7 +51,12 @@ namespace protocol { } void protocol_t::send_result(const session_key_t& session_key, token::list_t tokens) { - token::list_t result{"filter-result", session_key.session, session_key.token}; + token::list_t result{"filter-result"}; + if(version < "0.5") { + result.insert(result.end(), {session_key.token, session_key.session}); + } else { + result.insert(result.end(), {session_key.session, session_key.token}); + } for(auto& token : tokens) { result.push_back(token); }