Added filter responses to protocol

master
Thor 4 years ago
parent 82dfa2c215
commit 1f74e02400
  1. 4
      include/protocol/protocol.hpp
  2. 24
      src/protocol/protocol.cpp

@ -35,6 +35,10 @@ namespace protocol {
void absorb(const std::string& input);
void send(const token::list_t& tokens);
void send_result(const session_key_t& session_key, token::list_t tokens);
void proceed(const session_key_t& session_key);
void fail(const session_key_t& session_key);
void submit_message(const session_key_t& session_key, const std::vector<std::string>& header, const std::vector<std::string>& body);
protected:

@ -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) {

Loading…
Cancel
Save