|
|
|
@ -51,12 +51,12 @@ namespace protocol { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void protocol_t::send_result(const session_key_t& session_key, token::list_t tokens) { |
|
|
|
|
void protocol_t::send_result(const session_key_t& session_key, const token::string_t& session_token, token::list_t tokens) { |
|
|
|
|
token::list_t result{"filter-result"}; |
|
|
|
|
if(version < "0.5") { |
|
|
|
|
result.insert(result.end(), {session_key.token, session_key.session}); |
|
|
|
|
result.insert(result.end(), {session_token, session_key}); |
|
|
|
|
} else { |
|
|
|
|
result.insert(result.end(), {session_key.session, session_key.token}); |
|
|
|
|
result.insert(result.end(), {session_key, session_token}); |
|
|
|
|
} |
|
|
|
|
for(auto& token : tokens) { |
|
|
|
|
result.push_back(token); |
|
|
|
@ -64,39 +64,39 @@ namespace protocol { |
|
|
|
|
send(result); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void protocol_t::proceed(const session_key_t& session_key) { |
|
|
|
|
send_result(session_key, {"proceed"}); |
|
|
|
|
void protocol_t::proceed(const session_key_t& session_key, const token::string_t& session_token) { |
|
|
|
|
send_result(session_key, session_token, {"proceed"}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void protocol_t::junk(const session_key_t& session_key) { |
|
|
|
|
send_result(session_key, {"junk"}); |
|
|
|
|
void protocol_t::junk(const session_key_t& session_key, const token::string_t& session_token) { |
|
|
|
|
send_result(session_key, session_token, {"junk"}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void protocol_t::fail(const session_key_t& session_key) { |
|
|
|
|
send_result(session_key, {"disconnect", "451 Aborted"}); |
|
|
|
|
void protocol_t::fail(const session_key_t& session_key, const token::string_t& session_token) { |
|
|
|
|
send_result(session_key, session_token, {"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, data_line}); |
|
|
|
|
void protocol_t::send_data_line(const session_key_t& session_key, const token::string_t& session_token, const string& data_line) { |
|
|
|
|
send({"filter-dataline", session_key, session_token, data_line}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void protocol_t::submit_message(const session_key_t& session_key, const vector<string>& header, const vector<string>& body) { |
|
|
|
|
void protocol_t::submit_message(const session_key_t& session_key, const token::string_t& session_token, const vector<string>& header, const vector<string>& body) { |
|
|
|
|
for(auto& data_line : header) { |
|
|
|
|
send_data_line(session_key, data_line); |
|
|
|
|
send_data_line(session_key, session_token, data_line); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
send_data_line(session_key, ""); |
|
|
|
|
send_data_line(session_key, session_token, ""); |
|
|
|
|
|
|
|
|
|
for(auto& data_line : body) { |
|
|
|
|
if(data_line == ".") { |
|
|
|
|
send_data_line(session_key, ".."); |
|
|
|
|
send_data_line(session_key, session_token, ".."); |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
send_data_line(session_key, data_line); |
|
|
|
|
send_data_line(session_key, session_token, data_line); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
send_data_line(session_key, "."); |
|
|
|
|
send_data_line(session_key, session_token, "."); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ios_protocol_t::ios_protocol_t(std::istream& in, std::ostream& out) : |
|
|
|
@ -114,18 +114,21 @@ namespace protocol { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool operator==(const session_key_t& l, const session_key_t& r) { |
|
|
|
|
return l.session == r.session && l.token == r.token; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
session_key_t session_key_from(const token::list_t& tokens) { |
|
|
|
|
auto session_id = tokens.at(5); |
|
|
|
|
auto session_token = tokens.at(6); |
|
|
|
|
return {session_id, session_token}; |
|
|
|
|
return tokens.at(5); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
session_key_t session_key_from(const message_t& message) { |
|
|
|
|
auto tokens = token::decompose(message.input); |
|
|
|
|
auto tokens = token::decompose(message.input, 6); |
|
|
|
|
return session_key_from(tokens); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
token::string_t session_token_from(const token::list_t& tokens) { |
|
|
|
|
return tokens.at(6); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
token::string_t session_token_from(const message_t& message) { |
|
|
|
|
auto tokens = token::decompose(message.input, 7); |
|
|
|
|
return session_token_from(tokens); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|