コード例 #1
0
void
TAO_CEC_Reactive_SupplierControl::query_suppliers ()
{
#if defined (TAO_HAS_TYPED_EVENT_CHANNEL)
  if (this->typed_event_channel_)
    {
      // Typed EC
      TAO_CEC_Ping_Typed_Push_Supplier push_worker (this);

      this->typed_event_channel_->typed_supplier_admin ()->for_each (&push_worker);
    }
  else
    {
#endif /* TAO_HAS_TYPED_EVENT_CHANNEL */

  // Un-typed EC
  TAO_CEC_Ping_Push_Supplier push_worker (this);
  this->event_channel_->supplier_admin ()->for_each (&push_worker);

  TAO_CEC_Ping_Pull_Supplier pull_worker (this);
  this->event_channel_->supplier_admin ()->for_each (&pull_worker);

#if defined (TAO_HAS_TYPED_EVENT_CHANNEL)
    }
#endif /* TAO_HAS_TYPED_EVENT_CHANNEL */
}
コード例 #2
0
ファイル: CEC_ConsumerAdmin.cpp プロジェクト: binary42/OCI
void
TAO_CEC_ConsumerAdmin::push (const CORBA::Any &event)
{
  TAO_CEC_Propagate_Event_Push push_worker (event);

  this->push_admin_.for_each (&push_worker);

  TAO_CEC_Propagate_Event_Pull pull_worker (event);

  this->pull_admin_.for_each (&pull_worker);
}
コード例 #3
0
 /// single argument version 
 std::vector<flexible_type> lualambda_master::bulk_eval(size_t lambda_hash, const std::vector<flexible_type>& args, bool skip_undefined, int seed) {
   size_t worker_id = pop_worker();
   std::vector<flexible_type> ret;
   std::string lambdaname = "lambda" + std::to_string(lambda_hash);
   auto function = (*clients[worker_id])[lambdaname.c_str()];
   try {
     ret.resize(args.size());
     for (size_t i = 0;i < args.size(); ++i) {
       if (skip_undefined && args[i].get_type() == flex_type_enum::UNDEFINED) {
         ret[i] = FLEX_UNDEFINED;
       } else {
         call_lua_function(function, args[i], ret[i]);
       }
     }
   } catch (...) {
     push_worker(worker_id);
     throw;
   }
   push_worker(worker_id);
   return ret;
 }