|
|
|
@ -37,16 +37,34 @@ namespace protocol { |
|
|
|
|
void protocol_t::absorb(const std::string& input) { |
|
|
|
|
auto tokens = token::decompose(input, max_pattern_length); |
|
|
|
|
auto pattern = token::pattern_t(tokens, false); |
|
|
|
|
debug && cout << "Received pattern " << pattern << endl; |
|
|
|
|
debug && cerr << "Received pattern " << pattern << endl; |
|
|
|
|
|
|
|
|
|
auto element = handlers.find(pattern); |
|
|
|
|
if(element != handlers.end()) { |
|
|
|
|
if(element == handlers.end()) { |
|
|
|
|
debug && cerr << "Unknown pattern " << pattern << endl; |
|
|
|
|
} else { |
|
|
|
|
element->second(*this, {input, element->first}); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
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}; |
|
|
|
|
for(auto& token : tokens) { |
|
|
|
|
result.push_back(token); |
|
|
|
|
} |
|
|
|
|
send(result); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void protocol_t::proceed(const session_key_t& session_key) { |
|
|
|
|
send_result(session_key, {"proceed"}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void protocol_t::fail(const session_key_t& session_key) { |
|
|
|
|
send_result(session_key, {"disconnect", "451 Aborted"}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void protocol_t::send_data_line(const session_key_t& session_key, const string& data_line) { |
|
|
|
|
send({"filter-dataline", session_key.session, session_key.token, session_key.token, data_line}); |
|
|
|
|
send({"filter-dataline", session_key.session, session_key.token, data_line}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void protocol_t::submit_message(const session_key_t& session_key, const vector<string>& header, const vector<string>& body) { |
|
|
|
|