Public Member Functions

TAO_Notify_Builder Class Reference

Helper class to create and activate CORBA objects. More...

#include <Builder.h>

Inheritance diagram for TAO_Notify_Builder:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 TAO_Notify_Builder (void)
virtual ~TAO_Notify_Builder ()
virtual
CosNotifyChannelAdmin::EventChannelFactory_ptr 
build_event_channel_factory (PortableServer::POA_ptr poa, const char *factory_name=0)
 = Factory Methods
virtual
CosNotifyFilter::FilterFactory_ptr 
build_filter_factory (PortableServer::POA_ptr poa, TAO_Notify_FilterFactory *&ff)
 Build the Filter Factory.
virtual
CosNotifyChannelAdmin::EventChannel_ptr 
build_event_channel (TAO_Notify_EventChannelFactory *ecf, const CosNotification::QoSProperties &initial_qos, const CosNotification::AdminProperties &initial_admin, CosNotifyChannelAdmin::ChannelID_out id, const char *ec_name=0)
 Build EventChannel.
virtual TAO_Notify_EventChannelbuild_event_channel (TAO_Notify_EventChannelFactory *ecf, const CosNotifyChannelAdmin::ChannelID id, const char *ec_name=0)
virtual
CosNotifyChannelAdmin::ConsumerAdmin_ptr 
build_consumer_admin (TAO_Notify_EventChannel *ec, CosNotifyChannelAdmin::InterFilterGroupOperator op, CosNotifyChannelAdmin::AdminID_out id)
 Build ConsumerAdmin.
virtual TAO_Notify_ConsumerAdminbuild_consumer_admin (TAO_Notify_EventChannel *ec, const CosNotifyChannelAdmin::AdminID id)
virtual
CosNotifyChannelAdmin::SupplierAdmin_ptr 
build_supplier_admin (TAO_Notify_EventChannel *ec, CosNotifyChannelAdmin::InterFilterGroupOperator op, CosNotifyChannelAdmin::AdminID_out id)
 Build SupplierAdmin.
virtual TAO_Notify_SupplierAdminbuild_supplier_admin (TAO_Notify_EventChannel *ec, const CosNotifyChannelAdmin::AdminID id)
virtual
CosNotifyChannelAdmin::ProxyConsumer_ptr 
build_proxy (TAO_Notify_SupplierAdmin *sa, CosNotifyChannelAdmin::ClientType ctype, CosNotifyChannelAdmin::ProxyID_out proxy_id, const CosNotification::QoSProperties &initial_qos)
 Build ProxyConsumer.
virtual TAO_Notify_ProxyConsumerbuild_proxy (TAO_Notify_SupplierAdmin *sa, CosNotifyChannelAdmin::ClientType ctype, const CosNotifyChannelAdmin::ProxyID proxy_id)
 Reload ProxyConsumer.
virtual
CosNotifyChannelAdmin::ProxySupplier_ptr 
build_proxy (TAO_Notify_ConsumerAdmin *ca, CosNotifyChannelAdmin::ClientType ctype, CosNotifyChannelAdmin::ProxyID_out proxy_id, const CosNotification::QoSProperties &initial_qos)
 Build ProxySupplier.
virtual TAO_Notify_ProxySupplierbuild_proxy (TAO_Notify_ConsumerAdmin *ca, CosNotifyChannelAdmin::ClientType ctype, const CosNotifyChannelAdmin::ProxyID proxy_id)
 Reload ProxySupplier.
virtual
CosEventChannelAdmin::ProxyPushSupplier_ptr 
build_proxy (TAO_Notify_ConsumerAdmin *ca)
 Build CosEC style ProxySupplier.
virtual
CosEventChannelAdmin::ProxyPushConsumer_ptr 
build_proxy (TAO_Notify_SupplierAdmin *sa)
 Build CosEC style ProxyConsumer.
virtual void apply_reactive_concurrency (TAO_Notify_Object &object)
 Apply Reactive concurrency.
virtual void apply_thread_pool_concurrency (TAO_Notify_Object &object, const NotifyExt::ThreadPoolParams &tp_params)
 Apply Thread Pools.
virtual void apply_lane_concurrency (TAO_Notify_Object &object, const NotifyExt::ThreadPoolLanesParams &tpl_params)
 Apply Thread Pools with Lanes.

Detailed Description

Helper class to create and activate CORBA objects.

Definition at line 48 of file Builder.h.


Constructor & Destructor Documentation

TAO_Notify_Builder::TAO_Notify_Builder ( void   ) 

Definition at line 159 of file Builder.cpp.

TAO_Notify_Builder::~TAO_Notify_Builder (  )  [virtual]

Definition at line 165 of file Builder.cpp.

{
}


Member Function Documentation

void TAO_Notify_Builder::apply_lane_concurrency ( TAO_Notify_Object object,
const NotifyExt::ThreadPoolLanesParams &  tpl_params 
) [virtual]

Apply Thread Pools with Lanes.

Reimplemented in TAO_Notify_RT_Builder.

Definition at line 526 of file Builder.cpp.

{
  // No lane support
  throw CORBA::NO_IMPLEMENT ();
}

void TAO_Notify_Builder::apply_reactive_concurrency ( TAO_Notify_Object object  )  [virtual]

Apply Reactive concurrency.

Definition at line 498 of file Builder.cpp.

{
  TAO_Notify_Reactive_Task* worker_task;

  ACE_NEW_THROW_EX (worker_task,
                    TAO_Notify_Reactive_Task (),
                    CORBA::NO_MEMORY ());

  object.set_worker_task (worker_task);

  worker_task->init ();
}

void TAO_Notify_Builder::apply_thread_pool_concurrency ( TAO_Notify_Object object,
const NotifyExt::ThreadPoolParams &  tp_params 
) [virtual]

Apply Thread Pools.

Reimplemented in TAO_Notify_RT_Builder.

Definition at line 512 of file Builder.cpp.

{
  TAO_Notify_ThreadPool_Task* worker_task = 0;

  ACE_NEW_THROW_EX (worker_task,
                    TAO_Notify_ThreadPool_Task (),
                    CORBA::NO_MEMORY ());

  object.set_worker_task (worker_task);

  worker_task->init (tp_params, object.admin_properties_);
}

CosNotifyChannelAdmin::ConsumerAdmin_ptr TAO_Notify_Builder::build_consumer_admin ( TAO_Notify_EventChannel ec,
CosNotifyChannelAdmin::InterFilterGroupOperator  op,
CosNotifyChannelAdmin::AdminID_out  id 
) [virtual]

Build ConsumerAdmin.

Definition at line 246 of file Builder.cpp.

{
  CosNotifyChannelAdmin::ConsumerAdmin_var ca_ret;

  TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();

  TAO_Notify_ConsumerAdmin* ca = 0;
  factory->create (ca);

  ca->init (ec);

  ca->filter_operator (op);

  CORBA::Object_var obj = ca->activate (ca);

  id = ca->id ();

  ca_ret = CosNotifyChannelAdmin::ConsumerAdmin::_narrow (obj.in());

  // insert admin in CA container.
  ec->ca_container_->insert (ca);

  return ca_ret._retn ();
}

TAO_Notify_ConsumerAdmin * TAO_Notify_Builder::build_consumer_admin ( TAO_Notify_EventChannel ec,
const CosNotifyChannelAdmin::AdminID  id 
) [virtual]

Build ConsumerAdmin during topology restore TODO: this returns a reference to the actual type to accomodate loadable builder/factory there should be an appropriate base class for it to return.

Definition at line 275 of file Builder.cpp.

{
  TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
  TAO_Notify_ConsumerAdmin * ca = 0;
  factory->create (ca);

  ca->init (ec);

  CORBA::Object_var obj = ca->activate (ca, id);

  // insert admin in CA container.
  ec->ca_container_->insert (ca);
  return ca;
}

CosNotifyChannelAdmin::EventChannel_ptr TAO_Notify_Builder::build_event_channel ( TAO_Notify_EventChannelFactory ecf,
const CosNotification::QoSProperties initial_qos,
const CosNotification::AdminProperties initial_admin,
CosNotifyChannelAdmin::ChannelID_out  id,
const char *  ec_name = 0 
) [virtual]

Build EventChannel.

Definition at line 199 of file Builder.cpp.

{
  TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();

  TAO_Notify_EventChannel* ec = 0;
  factory->create (ec, ec_name);

  ec->init (ecf, initial_qos, initial_admin);

  // insert ec in ec container.
  ecf->ec_container().insert (ec);

  CORBA::Object_var obj = ec->activate (ec);

  // Populate the ID to return.
  id = ec->id ();

  return CosNotifyChannelAdmin::EventChannel::_narrow (obj.in());
}

TAO_Notify_EventChannel * TAO_Notify_Builder::build_event_channel ( TAO_Notify_EventChannelFactory ecf,
const CosNotifyChannelAdmin::ChannelID  id,
const char *  ec_name = 0 
) [virtual]

Definition at line 225 of file Builder.cpp.

{
  TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();

  TAO_Notify_EventChannel* ec = 0;
  factory->create (ec, ec_name);

  ec->init (ecf); //, initial_qos, initial_admin

  // insert ec in ec container.
  ecf->ec_container().insert (ec);

  ec->activate (ec, id);

  return ec;
}

CosNotifyChannelAdmin::EventChannelFactory_ptr TAO_Notify_Builder::build_event_channel_factory ( PortableServer::POA_ptr  poa,
const char *  factory_name = 0 
) [virtual]

= Factory Methods

Build EventChannel Factory.

Definition at line 185 of file Builder.cpp.

{
  TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();

  // Create ECF
  TAO_Notify_EventChannelFactory* ecf = 0;
  factory->create (ecf, name);

  ecf->init (poa);
  return ecf->activate_self ();
}

CosNotifyFilter::FilterFactory_ptr TAO_Notify_Builder::build_filter_factory ( PortableServer::POA_ptr  poa,
TAO_Notify_FilterFactory *&  ff 
) [virtual]

Build the Filter Factory.

Definition at line 170 of file Builder.cpp.

{
  ff = ACE_Dynamic_Service<TAO_Notify_FilterFactory>::instance ("TAO_Notify_FilterFactory");

  if (ff == 0)
    {
      ACE_NEW_THROW_EX (ff,
                        TAO_Notify_ETCL_FilterFactory (),
                        CORBA::NO_MEMORY ());
    }

  return ff->create (poa);
}

TAO_Notify_ProxyConsumer * TAO_Notify_Builder::build_proxy ( TAO_Notify_SupplierAdmin sa,
CosNotifyChannelAdmin::ClientType  ctype,
const CosNotifyChannelAdmin::ProxyID  proxy_id 
) [virtual]

Reload ProxyConsumer.

Definition at line 408 of file Builder.cpp.

{
  switch (ctype)
    {
    case CosNotifyChannelAdmin::ANY_EVENT:
      {
        TAO_Notify_ProxyPushConsumer_Builder pb;
        return pb.build (sa, proxy_id);
      }
    break;

    case CosNotifyChannelAdmin::STRUCTURED_EVENT:
      {
        TAO_Notify_StructuredProxyPushConsumer_Builder pb;
        return pb.build (sa, proxy_id);
      }
    break;

    case CosNotifyChannelAdmin::SEQUENCE_EVENT:
     {
       TAO_Notify_SequenceProxyPushConsumer_Builder pb;
       return pb.build (sa, proxy_id);
     }
      break;

    default:
      throw CORBA::BAD_PARAM ();
                        }
}

CosNotifyChannelAdmin::ProxyConsumer_ptr TAO_Notify_Builder::build_proxy ( TAO_Notify_SupplierAdmin sa,
CosNotifyChannelAdmin::ClientType  ctype,
CosNotifyChannelAdmin::ProxyID_out  proxy_id,
const CosNotification::QoSProperties initial_qos 
) [virtual]

Build ProxyConsumer.

Definition at line 340 of file Builder.cpp.

{
  switch (ctype)
    {
    case CosNotifyChannelAdmin::ANY_EVENT:
      {
        TAO_Notify_ProxyPushConsumer_Builder pb;
        return pb.build (sa, proxy_id, initial_qos);
      }
    break;

    case CosNotifyChannelAdmin::STRUCTURED_EVENT:
      {
        TAO_Notify_StructuredProxyPushConsumer_Builder pb;
        return pb.build (sa, proxy_id, initial_qos);
      }
    break;

    case CosNotifyChannelAdmin::SEQUENCE_EVENT:
     {
       TAO_Notify_SequenceProxyPushConsumer_Builder pb;
       return pb.build (sa, proxy_id, initial_qos);
     }
      break;

    default:
      throw CORBA::BAD_PARAM ();
                        }
}

CosEventChannelAdmin::ProxyPushConsumer_ptr TAO_Notify_Builder::build_proxy ( TAO_Notify_SupplierAdmin sa  )  [virtual]

Build CosEC style ProxyConsumer.

Definition at line 486 of file Builder.cpp.

{
  CosNotifyChannelAdmin::ProxyID proxy_id;

  TAO_Notify_CosEC_ProxyPushConsumer_Builder pb;

  CosNotification::QoSProperties initial_qos;

  return pb.build (sa, proxy_id, initial_qos);
}

TAO_Notify_ProxySupplier * TAO_Notify_Builder::build_proxy ( TAO_Notify_ConsumerAdmin ca,
CosNotifyChannelAdmin::ClientType  ctype,
const CosNotifyChannelAdmin::ProxyID  proxy_id 
) [virtual]

Reload ProxySupplier.

Definition at line 441 of file Builder.cpp.

{
  switch (ctype)
    {
    case CosNotifyChannelAdmin::ANY_EVENT:
      {
        TAO_Notify_ProxyPushSupplier_Builder pb;
        return pb.build (ca, proxy_id);
      }
      break;

    case CosNotifyChannelAdmin::STRUCTURED_EVENT:
      {
        TAO_Notify_StructuredProxyPushSupplier_Builder pb;
        return pb.build (ca, proxy_id);
      }
    break;

    case CosNotifyChannelAdmin::SEQUENCE_EVENT:
      {
        TAO_Notify_SequenceProxyPushSupplier_Builder pb;
        return pb.build (ca, proxy_id);
      }
      break;

    default:
      throw CORBA::BAD_PARAM ();
    }
}

CosEventChannelAdmin::ProxyPushSupplier_ptr TAO_Notify_Builder::build_proxy ( TAO_Notify_ConsumerAdmin ca  )  [virtual]

Build CosEC style ProxySupplier.

Definition at line 474 of file Builder.cpp.

{
  CosNotifyChannelAdmin::ProxyID proxy_id;

  TAO_Notify_CosEC_ProxyPushSupplier_Builder pb;

  CosNotification::QoSProperties initial_qos;

  return pb.build (ca, proxy_id, initial_qos);
}

CosNotifyChannelAdmin::ProxySupplier_ptr TAO_Notify_Builder::build_proxy ( TAO_Notify_ConsumerAdmin ca,
CosNotifyChannelAdmin::ClientType  ctype,
CosNotifyChannelAdmin::ProxyID_out  proxy_id,
const CosNotification::QoSProperties initial_qos 
) [virtual]

Build ProxySupplier.

Definition at line 374 of file Builder.cpp.

{
  switch (ctype)
    {
    case CosNotifyChannelAdmin::ANY_EVENT:
      {
        TAO_Notify_ProxyPushSupplier_Builder pb;
        return pb.build (ca, proxy_id, initial_qos);
      }
      break;

    case CosNotifyChannelAdmin::STRUCTURED_EVENT:
      {
        TAO_Notify_StructuredProxyPushSupplier_Builder pb;
        return pb.build (ca, proxy_id, initial_qos);
      }
    break;

    case CosNotifyChannelAdmin::SEQUENCE_EVENT:
      {
        TAO_Notify_SequenceProxyPushSupplier_Builder pb;
        return pb.build (ca, proxy_id, initial_qos);
      }
      break;

    default:
      throw CORBA::BAD_PARAM ();
    }
}

CosNotifyChannelAdmin::SupplierAdmin_ptr TAO_Notify_Builder::build_supplier_admin ( TAO_Notify_EventChannel ec,
CosNotifyChannelAdmin::InterFilterGroupOperator  op,
CosNotifyChannelAdmin::AdminID_out  id 
) [virtual]

Build SupplierAdmin.

Definition at line 293 of file Builder.cpp.

{
  CosNotifyChannelAdmin::SupplierAdmin_var sa_ret;

  TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();

  TAO_Notify_SupplierAdmin* sa = 0;
  factory->create (sa);

  sa->init (ec);

  sa->filter_operator (op);

  CORBA::Object_var obj = sa->activate (sa);

  id = sa->id ();

  sa_ret = CosNotifyChannelAdmin::SupplierAdmin::_narrow (obj.in());

  // insert admin in SA container.
  ec->sa_container().insert (sa);

  return sa_ret._retn ();
}

TAO_Notify_SupplierAdmin * TAO_Notify_Builder::build_supplier_admin ( TAO_Notify_EventChannel ec,
const CosNotifyChannelAdmin::AdminID  id 
) [virtual]

Build ConsumerAdmin during topology restore TODO: this returns a reference to the actual type to accomodate loadable builder/factory there should be an appropriate base class for it to return.

Definition at line 321 of file Builder.cpp.

{
  TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
  TAO_Notify_SupplierAdmin * sa = 0;
  factory->create (sa);

  sa->init (ec);

  CORBA::Object_var obj = sa->activate (sa, id);

  // insert admin in CA container.
  ec->sa_container().insert (sa);

  return sa;
}


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines