#include <iostream>
{
std::string m_payload;
envelope(std::string payload) : m_payload(std::move(payload)) {}
};
{
public :
modificator_agent(context_t ctx,
std::string prefix, std::string suffix,
, m_prefix(
std::move(prefix))
, m_suffix(
std::move(suffix))
, m_receiver(
std::move(receiver))
{
}
private :
const std::string m_prefix;
const std::string m_suffix;
void on_envelope(mutable_mhood_t<envelope> cmd)
{
std::cout <<
"modificator, msg_addr=" << cmd.
get()
<< ", old_content=" << cmd->m_payload;
cmd->m_payload.insert(begin(cmd->m_payload), begin(m_prefix), end(m_prefix));
cmd->m_payload.insert(end(cmd->m_payload), begin(m_suffix), end(m_suffix));
std::cout << ", new_content=" << cmd->m_payload << std::endl;
}
};
{
public :
{
}
private :
void on_envelope(mhood_t<envelope> cmd)
{
std::cout << "receiver, msg_addr=" << cmd.get()
<< ", content=" << cmd->m_payload;
}
};
int main()
{
try
{
auto receiver = coop.
make_agent<receiver_agent>();
auto modificator = coop.
make_agent<modificator_agent>(
"<{(", ")}>", receiver->so_direct_mbox() );
modificator_mbox = modificator->so_direct_mbox();
} );
so_5::send<so_5::mutable_msg<envelope>>(modificator_mbox, "hello");
} );
}
catch(const std::exception & x)
{
std::cerr << "Oops! Exception: " << x.what() << std::endl;
}
return 0;
}