📄 ftec_gateway.cpp
字号:
{
return impl_->ftec->append_observer(observer ACE_ENV_ARG_PARAMETER);
}
void FTEC_Gateway::remove_observer (RtecEventChannelAdmin::Observer_Handle handle
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((
CORBA::SystemException,
RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR,
RtecEventChannelAdmin::EventChannel::CANT_REMOVE_OBSERVER))
{
impl_->ftec->remove_observer(handle ACE_ENV_ARG_PARAMETER);
}
/// FTEC_Gateway_ConsumerAdmin
FTEC_Gateway_ConsumerAdmin::FTEC_Gateway_ConsumerAdmin(FTEC_Gateway_Impl* impl)
: impl_(impl)
{
}
FTEC_Gateway_ConsumerAdmin::~FTEC_Gateway_ConsumerAdmin()
{
}
RtecEventChannelAdmin::ProxyPushSupplier_ptr
FTEC_Gateway_ConsumerAdmin::obtain_push_supplier (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
FtRtecEventComm::ObjectId** remote_proxy_oid_ptr;
ACE_NEW_THROW_EX(remote_proxy_oid_ptr, FtRtecEventComm::ObjectId*, CORBA::NO_MEMORY());
FtRtecEventComm::ObjectId local_oid;
local_oid.length(sizeof(remote_proxy_oid_ptr));
memcpy(&local_oid[0], &remote_proxy_oid_ptr, sizeof(remote_proxy_oid_ptr));
RtecEventChannelAdmin::ProxyPushSupplier_ptr result;
activate_object_with_id(result, impl_->poa,
&impl_->proxy_supplier_servant,
local_oid ACE_ENV_ARG_PARAMETER);
return result;
}
/// FTEC_Gateway_SupplierAdmin
FTEC_Gateway_SupplierAdmin::FTEC_Gateway_SupplierAdmin(FTEC_Gateway_Impl* impl)
: impl_(impl)
{
}
FTEC_Gateway_SupplierAdmin::~FTEC_Gateway_SupplierAdmin()
{
}
// = The RtecEventChannelAdmin::SupplierAdmin methods...
RtecEventChannelAdmin::ProxyPushConsumer_ptr
FTEC_Gateway_SupplierAdmin::obtain_push_consumer (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
FtRtecEventComm::ObjectId** remote_proxy_oid_ptr;
ACE_NEW_THROW_EX(remote_proxy_oid_ptr, FtRtecEventComm::ObjectId*, CORBA::NO_MEMORY());
FtRtecEventComm::ObjectId local_oid;
local_oid.length(sizeof(remote_proxy_oid_ptr));
memcpy(&local_oid[0], &remote_proxy_oid_ptr, sizeof(remote_proxy_oid_ptr));
RtecEventChannelAdmin::ProxyPushConsumer_ptr result;
activate_object_with_id(result, impl_->poa,
&impl_->proxy_consumer_servant,
local_oid ACE_ENV_ARG_PARAMETER);
return result;
}
FtRtecEventComm::ObjectId**
get_remote_oid_ptr(CORBA::ORB_ptr orb ACE_ENV_ARG_DECL)
{
PortableServer::Current_var current =
resolve_init<PortableServer::Current>(orb,
"POACurrent"
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN(0);
PortableServer::ObjectId_var object_id =
current->get_object_id(ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN(0);
FtRtecEventComm::ObjectId** result;
memcpy(&result, &object_id[0], sizeof(FtRtecEventComm::ObjectId**));
return result;
}
/// FTEC_Gateway_ProxyPushSupplier
FTEC_Gateway_ProxyPushSupplier::FTEC_Gateway_ProxyPushSupplier(FTEC_Gateway_Impl* impl)
: impl_(impl)
{
}
FTEC_Gateway_ProxyPushSupplier::~FTEC_Gateway_ProxyPushSupplier()
{
}
// = The RtecEventChannelAdmin::ProxyPushSupplier methods...
void FTEC_Gateway_ProxyPushSupplier::connect_push_consumer (
RtecEventComm::PushConsumer_ptr push_consumer,
const RtecEventChannelAdmin::ConsumerQOS &qos
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
RtecEventChannelAdmin::AlreadyConnected,
RtecEventChannelAdmin::TypeError))
{
FtRtecEventComm::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
*oid_ptr = impl_->ftec->connect_push_consumer(push_consumer, qos ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
}
void FTEC_Gateway_ProxyPushSupplier::disconnect_push_supplier (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
FtRtecEventComm::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
impl_->ftec->disconnect_push_supplier(**oid_ptr ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
delete *oid_ptr;
delete oid_ptr;
}
void FTEC_Gateway_ProxyPushSupplier::suspend_connection (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
FtRtecEventComm::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
impl_->ftec->suspend_push_supplier(**oid_ptr ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
}
void FTEC_Gateway_ProxyPushSupplier::resume_connection (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
FtRtecEventComm::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
impl_->ftec->resume_push_supplier(**oid_ptr ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
}
/// FTEC_Gateway_ProxyPushConsumer
FTEC_Gateway_ProxyPushConsumer::FTEC_Gateway_ProxyPushConsumer(FTEC_Gateway_Impl* impl)
: impl_(impl)
{
}
FTEC_Gateway_ProxyPushConsumer::~FTEC_Gateway_ProxyPushConsumer()
{
}
// = The RtecEventChannelAdmin::ProxyPushConsumer methods...
void FTEC_Gateway_ProxyPushConsumer::push (const RtecEventComm::EventSet & data
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
FtRtecEventComm::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
/*
if (CORBA::is_nil(impl_->push_handler.in())) {
impl_->push_handler = impl_->push_handler_servant._this(ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
}
impl_->ftec->sendc_push (impl_->push_handler.in(),
**oid_ptr,
data ACE_ENV_ARG_PARAMETER);
*/
impl_->ftec->push(**oid_ptr, data ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
}
void FTEC_Gateway_ProxyPushConsumer::connect_push_supplier (
RtecEventComm::PushSupplier_ptr push_supplier,
const RtecEventChannelAdmin::SupplierQOS& qos
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
RtecEventChannelAdmin::AlreadyConnected))
{
FtRtecEventComm::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
*oid_ptr = impl_->ftec->connect_push_supplier(push_supplier, qos ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
}
void FTEC_Gateway_ProxyPushConsumer::disconnect_push_consumer (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
FtRtecEventComm::ObjectId** oid_ptr = get_remote_oid_ptr(impl_->orb.in() ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
impl_->ftec->disconnect_push_consumer(**oid_ptr ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
delete *oid_ptr;
delete oid_ptr;
}
PushConsumerHandler::PushConsumerHandler()
{
}
PushConsumerHandler::~PushConsumerHandler()
{
}
void PushConsumerHandler::push (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
}
void PushConsumerHandler::push_excep (FtRtecEventComm::AMI_PushConsumerExceptionHolder * excep_holder ACE_ENV_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
ACE_UNUSED_ARG(excep_holder);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -