3.15.4.3. Asynchronous Messaging Mapping Example

interface StockManager
{
  attribute string stock_exchange_name;
  boolean add_stock (in string symbol, in double quote);
  void remove_stock (in string symbol, out double quote) raises (InvalidStock);
};


void sendc_get_stock_exchange_name (
  in AMI_StockManagerHandler ami_handler);
void sendc_set_stock_exchange_name (
  in AMI_StockManagerHandler ami_handler,
  in string attr_stock_exchange_name);

void sendc_add_stock (
  in AMI_StockManagerHandler ami_handler,
  in string symbol,
  in double quote);

void sendc_remove_stock (
  in AMI_StockManagerHandler ami_handler,
  in string symbol);


AMI_StockManagerPoller sendp_get_stock_exchange_name ();
AMI_StockManagerPoller sendp_set_stock_exchange_name (
  in string attr_stock_exchange_name);

AMI_StockManagerPoller sendp_add_stock (
  in string symbol, in double quote);
AMI_StockManagerPoller sendp_remove_stock (
  in string symbol);


interface AMI_StockManagerHandler : Messaging::ReplyHandler
{
  void get_stock_exchange_name (
    in string ami_return_val);
  void get_stock_exchange_name_excep (
    in Messaging::ExceptionHolder excep_holder);

  void set_stock_exchange_name ();
  void set_stock_exchange_name_excep (
    in Messaging::ExceptionHolder excep_holder);

  void add_stock (in boolean ami_return_val);
  void add_stock_excep (
    in Messaging::ExceptionHolder excep_holder);

  void remove_stock (in double quote);
  void remove_stock_excep (
    in Messaging::ExceptionHolder excep_holder);
};


valuetype AMI_StockManagerPoller : Messaging::Poller
{
  void get_stock_exchange_name (
    in unsigned long timeout,
    out string ami_return_val);
  void set_stock_exchange_name (
    in unsigned long timeout);

  void add_stock (
    in unsigned long timeout,
    out boolean ami_return_val);

  void remove_stock (
    in unsigned long timeout,
    out double quote) raises (InvalidStock);
};