Listing 2: Fragment of the generated server-based infrastructure

namespace RMI {
const Message&
f01(Message& msg)
{
  Widget* instance = msg.instance();
  return (delete instance, msg);
}
const Message&
f02(Message& msg)
{
  std::string arg0 = msg.arg(0);
  return msg.result(new Widget(arg0));
}
const Message&
f03(Message& msg)
{
  Widget* arg0 = msg.arg(0);
  return msg.result(new Widget(*arg0));
}
const Message&
f04(Message& msg)
{
  Widget* instance = msg.instance();
  Widget*     arg0 = msg.arg(0);
  return msg.result(instance->operator=(*arg0));
}
const Message&
f05(Message& msg)
{
  Widget* instance = msg.instance();
  return msg.result(instance->name());
}
const Message&
f06(Message& msg)
{
  std::string arg0 = msg.arg(0);
  Point       arg1 = msg.arg(1);
  int         arg2 = msg.arg(2);
  return msg.result(new Circle(arg0, arg1, arg2));
}
const Message&
f09(Message& msg)
{
  Circle* instance = msg.instance();
  Point       arg0 = msg.arg(0);
  return (instance->center(arg0), msg);
}
const Message&
f10(Message& msg)

{
  Circle* instance = msg.instance();
  return msg.result(instance->center());
}
}
RMI::Server::Server()
{
  functions_["Widget::~Widget()"]                        = f01;
  functions_["Widget::Widget(const string&)"]             = f02;
  functions_["Widget::Widget(const Widget&)"]            = f03;
  functions_["Widget& Widget::operator=(const Widget&)"] = f04;
  functions_["const string& Widget::name() const"]       = f05;
  functions_["Circle::Circle(const string&, const Point&, int)"] = f06;
  functions_["void Circle::center(const Point&)"]        = f09;
  functions_["const Point& Circle::center() const"]      = f10;
}