📄 builder.cpp
字号:
// Builder.cpp,v 1.15 2003/10/28 18:34:23 bala Exp
#include "Builder.h"
#if ! defined (__ACE_INLINE__)
#include "Builder.inl"
#endif /* __ACE_INLINE__ */
ACE_RCSID (Notify,
Builder,
"Builder.cpp,v 1.15 2003/10/28 18:34:23 bala Exp")
#include "ace/Dynamic_Service.h"
#include "tao/PortableServer/PortableServerC.h"
#include "Factory.h"
#include "Properties.h"
#include "POA_Helper.h"
#include "ID_Factory.h"
#include "EventChannelFactory.h"
#include "EventChannel.h"
#include "SupplierAdmin.h"
#include "ConsumerAdmin.h"
#include "Event_Manager.h"
#include "Worker_Task.h"
#include "Reactive_Task.h"
#include "ThreadPool_Task.h"
#include "FilterFactory.h"
#include "Object.h"
#include "EventType.h"
#include "Event.h"
#include "Any/AnyEvent.h"
#include "Any/ProxyPushConsumer.h"
#include "Any/ProxyPushSupplier.h"
#include "Any/CosEC_ProxyPushConsumer.h"
#include "Any/CosEC_ProxyPushSupplier.h"
#include "Structured/StructuredProxyPushConsumer.h"
#include "Structured/StructuredProxyPushSupplier.h"
#include "Sequence/SequenceProxyPushConsumer.h"
#include "Sequence/SequenceProxyPushSupplier.h"
#include "ETCL_FilterFactory.h"
#include "Container_T.h"
template <class PROXY_IMPL,
class PROXY,
class PROXY_PTR,
class PROXY_VAR,
class PARENT>
class TAO_Notify_Proxy_Builder_T
{
public:
PROXY_PTR
build (PARENT *parent, CosNotifyChannelAdmin::ProxyID_out proxy_id
, const CosNotification::QoSProperties & initial_qos ACE_ENV_ARG_DECL)
{
PROXY_VAR proxy_ret;
TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
PROXY_IMPL* proxy = 0;
factory->create (proxy ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (proxy_ret._retn ());
PortableServer::ServantBase_var servant (proxy);
proxy->init (parent ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (proxy_ret._retn ());
proxy->set_qos (initial_qos ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (proxy_ret._retn ());
CORBA::Object_var obj = proxy->activate (proxy ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (proxy_ret._retn ());
proxy_id = proxy->id ();
proxy_ret = PROXY::_narrow (obj.in() ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (proxy_ret._retn ());
// insert proxy in admin container.
parent->insert (proxy ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (PROXY::_nil ());
return proxy_ret._retn ();
}
};
// define the ProxyConsumer Builders.
typedef TAO_Notify_Proxy_Builder_T<TAO_Notify_ProxyPushConsumer
, CosNotifyChannelAdmin::ProxyConsumer
, CosNotifyChannelAdmin::ProxyConsumer_ptr
, CosNotifyChannelAdmin::ProxyConsumer_var
, TAO_Notify_SupplierAdmin>
TAO_Notify_ProxyPushConsumer_Builder;
typedef TAO_Notify_Proxy_Builder_T<TAO_Notify_StructuredProxyPushConsumer
, CosNotifyChannelAdmin::ProxyConsumer
, CosNotifyChannelAdmin::ProxyConsumer_ptr
, CosNotifyChannelAdmin::ProxyConsumer_var
, TAO_Notify_SupplierAdmin>
TAO_Notify_StructuredProxyPushConsumer_Builder;
typedef TAO_Notify_Proxy_Builder_T<TAO_Notify_SequenceProxyPushConsumer
, CosNotifyChannelAdmin::ProxyConsumer
, CosNotifyChannelAdmin::ProxyConsumer_ptr
, CosNotifyChannelAdmin::ProxyConsumer_var
, TAO_Notify_SupplierAdmin>
TAO_Notify_SequenceProxyPushConsumer_Builder;
typedef TAO_Notify_Proxy_Builder_T<TAO_Notify_CosEC_ProxyPushConsumer
, CosEventChannelAdmin::ProxyPushConsumer
, CosEventChannelAdmin::ProxyPushConsumer_ptr
, CosEventChannelAdmin::ProxyPushConsumer_var
, TAO_Notify_SupplierAdmin>
TAO_Notify_CosEC_ProxyPushConsumer_Builder;
// define the ProxySupplier Builders.
typedef TAO_Notify_Proxy_Builder_T<TAO_Notify_ProxyPushSupplier
, CosNotifyChannelAdmin::ProxySupplier
, CosNotifyChannelAdmin::ProxySupplier_ptr
, CosNotifyChannelAdmin::ProxySupplier_var
, TAO_Notify_ConsumerAdmin>
TAO_Notify_ProxyPushSupplier_Builder;
typedef TAO_Notify_Proxy_Builder_T<TAO_Notify_StructuredProxyPushSupplier
, CosNotifyChannelAdmin::ProxySupplier
, CosNotifyChannelAdmin::ProxySupplier_ptr
, CosNotifyChannelAdmin::ProxySupplier_var
, TAO_Notify_ConsumerAdmin>
TAO_Notify_StructuredProxyPushSupplier_Builder;
typedef TAO_Notify_Proxy_Builder_T<TAO_Notify_SequenceProxyPushSupplier
, CosNotifyChannelAdmin::ProxySupplier
, CosNotifyChannelAdmin::ProxySupplier_ptr
, CosNotifyChannelAdmin::ProxySupplier_var
, TAO_Notify_ConsumerAdmin>
TAO_Notify_SequenceProxyPushSupplier_Builder;
typedef TAO_Notify_Proxy_Builder_T<TAO_Notify_CosEC_ProxyPushSupplier
, CosEventChannelAdmin::ProxyPushSupplier
, CosEventChannelAdmin::ProxyPushSupplier_ptr
, CosEventChannelAdmin::ProxyPushSupplier_var
, TAO_Notify_ConsumerAdmin>
TAO_Notify_CosEC_ProxyPushSupplier_Builder;
TAO_Notify_Builder::TAO_Notify_Builder (void)
{
// Init the static members.
TAO_Notify_AnyEvent::event_type_ = TAO_Notify_EventType::special ();
}
TAO_Notify_Builder::~TAO_Notify_Builder ()
{
}
CosNotifyFilter::FilterFactory_ptr
TAO_Notify_Builder::build_filter_factory (ACE_ENV_SINGLE_ARG_DECL)
{
TAO_Notify_FilterFactory* 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 ());
ACE_CHECK_RETURN (CosNotifyFilter::FilterFactory::_nil ());
}
PortableServer::POA_var default_poa = TAO_Notify_PROPERTIES::instance ()->default_poa ();
return ff->create (default_poa ACE_ENV_ARG_PARAMETER);
}
CosNotifyChannelAdmin::EventChannelFactory_ptr
TAO_Notify_Builder::build_event_channel_factory (PortableServer::POA_ptr poa ACE_ENV_ARG_DECL)
{
CosNotifyChannelAdmin::EventChannelFactory_var ecf_ret;
TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
// Create ECF
TAO_Notify_EventChannelFactory* ecf = 0;
factory->create (ecf ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (ecf_ret._retn ());
PortableServer::ServantBase_var servant_var (ecf);
ecf->TAO_Notify_EventChannelFactory::init (poa ACE_ENV_ARG_PARAMETER);
CORBA::Object_var obj = ecf->activate (ecf ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (ecf_ret._retn ());
ecf_ret = CosNotifyChannelAdmin::EventChannelFactory::_narrow (obj.in() ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (ecf_ret._retn ());
return (ecf_ret._retn ());
}
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 ACE_ENV_ARG_DECL)
{
CosNotifyChannelAdmin::EventChannel_var ec_ret;
TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
TAO_Notify_EventChannel* ec = 0;
factory->create (ec ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (ec_ret._retn ());
PortableServer::ServantBase_var servant_var (ec);
ec->init (ecf, initial_qos, initial_admin ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (ec_ret._retn ());
// insert ec in ec container.
ecf->ec_container_->insert (ec ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (ec_ret._retn ());
CORBA::Object_var obj = ec->activate (ec ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (ec_ret._retn ());
// Populate the ID to return.
id = ec->id ();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -