text: //
  // $Id: Stock_Consumer.cpp 78603 2007-06-27 09:40:37Z johnnyw $
  //
  
  #include "Stock_Consumer.h"
  #include "QuoterC.h"
  #include "ace/streams.h"
  
  Stock_Consumer::Stock_Consumer ()
  {
  }
  
  void
  Stock_Consumer::connect (RtecEventChannelAdmin::EventChannel_ptr event_channel,
                           const RtecEventChannelAdmin::ConsumerQOS &subscriptions)
  {
    RtecEventChannelAdmin::ConsumerAdmin_var consumer_admin =
      event_channel->for_consumers ();
  
    this->supplier_proxy_ =
      consumer_admin->obtain_push_supplier ();
  
    RtecEventComm::PushConsumer_var myself = this->_this ();
    this->supplier_proxy_->connect_push_consumer (myself.in (),
                                                  subscriptions);
  }
  
  void
  Stock_Consumer::disconnect ()
  {
    // Do not receive any more events...
    this->supplier_proxy_->disconnect_push_supplier ();
  }
  
  void
  Stock_Consumer::push (const RtecEventComm::EventSet &data)
  {
    for (CORBA::ULong i = 0; i != data.length (); ++i) {
      const RtecEventComm::Event &e = data[i];
  
      Quoter::Event *event;
      if ((e.data.any_value >>= event) == 0)
        continue; // Invalid event
  
      cout << "The new price for one stock in \""
           << event->full_name.in ()
           << "\" (" << event->symbol.in ()
           << ") is " << event->price << endl;
    }
  }
  
  void
  Stock_Consumer::disconnect_push_consumer (void)
  {
    this->supplier_proxy_ =
      RtecEventChannelAdmin::ProxyPushSupplier::_nil ();
  }
  