📄 etcl_filter.cpp
字号:
TAO_Notify_Constraint_Expr *notify_constr_expr = 0;
for (u_int index = 0; index < id_list.length (); ++index)
{
if (this->constraint_expr_list_.find (id_list[index],
notify_constr_expr) == -1)
ACE_THROW_RETURN (CosNotifyFilter::ConstraintNotFound (id_list[index]),
0);
infoseq[index].constraint_expression =
notify_constr_expr->constr_expr;
// Get an id.
infoseq[index].constraint_id = id_list[index];
}
return infoseq._retn ();
}
CosNotifyFilter::ConstraintInfoSeq *
TAO_Notify_ETCL_Filter::get_all_constraints (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, ace_mon, this->lock_,
CORBA::INTERNAL ());
ACE_CHECK_RETURN (0);
CORBA::ULong current_size = ACE_static_cast (CORBA::ULong,
this->constraint_expr_list_.current_size ());
// Create the list that goes out.
CosNotifyFilter::ConstraintInfoSeq *infoseq_ptr;
ACE_NEW_THROW_EX (infoseq_ptr,
CosNotifyFilter::ConstraintInfoSeq (current_size),
CORBA::NO_MEMORY ());
ACE_CHECK_RETURN (0);
CosNotifyFilter::ConstraintInfoSeq_var infoseq (infoseq_ptr);
infoseq->length (current_size);
CONSTRAINT_EXPR_LIST::ITERATOR iter (this->constraint_expr_list_);
CONSTRAINT_EXPR_LIST::ENTRY *entry;
for (u_int index = 0; iter.done () == 0; iter.advance (), ++index)
{
if (iter.next (entry) != 0)
{
// Why do we cast to a const object?
// We want to force the TAO_String_Manager to make a
// copy of the string. It wouldn't unless we coax it to use
// the correct assignment operator.
infoseq[index].constraint_expression =
ACE_static_cast (const CosNotifyFilter::ConstraintExp,
entry->int_id_->constr_expr);
infoseq[index].constraint_id = entry->ext_id_;
}
}
return infoseq._retn ();
}
void
TAO_Notify_ETCL_Filter::remove_all_constraints (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, ace_mon, this->lock_,
CORBA::INTERNAL ());
ACE_CHECK;
this->remove_all_constraints_i (ACE_ENV_SINGLE_ARG_PARAMETER);
}
void
TAO_Notify_ETCL_Filter::remove_all_constraints_i (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_THROW_SPEC ((CORBA::SystemException))
{
CONSTRAINT_EXPR_LIST::ITERATOR iter (this->constraint_expr_list_);
CONSTRAINT_EXPR_LIST::ENTRY *entry;
u_int index;
for (index = 0; iter.done () == 0; iter.advance (), ++index)
{
if (iter.next (entry) != 0)
{
delete entry->int_id_;
}
}
this->constraint_expr_list_.unbind_all ();
}
void
TAO_Notify_ETCL_Filter::destroy (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, ace_mon, this->lock_,
CORBA::INTERNAL ());
ACE_CHECK;
this->remove_all_constraints_i (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
PortableServer::POA_var my_POA = _default_POA ();
PortableServer::ObjectId_var refTemp = my_POA->servant_to_id (this);
my_POA->deactivate_object (refTemp.in ());
}
CORBA::Boolean
TAO_Notify_ETCL_Filter::match (const CORBA::Any & /*filterable_data */
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
CosNotifyFilter::UnsupportedFilterableData))
{
ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (),
0);
}
CORBA::Boolean
TAO_Notify_ETCL_Filter::match_structured (const CosNotification::StructuredEvent & filterable_data
ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((CORBA::SystemException,
CosNotifyFilter::UnsupportedFilterableData))
{
ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, ace_mon, this->lock_,
CORBA::INTERNAL ());
ACE_CHECK_RETURN (0);
// We want to return true if at least one constraint matches.
CONSTRAINT_EXPR_LIST::ITERATOR iter (this->constraint_expr_list_);
CONSTRAINT_EXPR_LIST::ENTRY *entry;
TAO_Notify_Constraint_Visitor visitor;
if (visitor.bind_structured_event (filterable_data) != 0)
{
// Maybe throw some kind of exception here, or lower down,
return 0;
}
for (; iter.done () == 0; iter.advance ())
{
if (iter.next (entry) != 0)
{
if (entry->int_id_->interpreter.evaluate (visitor) == 1)
{
return 1;
}
}
}
return 0;
}
CORBA::Boolean
TAO_Notify_ETCL_Filter::match_typed (
const CosNotification::PropertySeq & /* filterable_data */
ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC (( CORBA::SystemException,
CosNotifyFilter::UnsupportedFilterableData))
{
ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (),
0);
}
CosNotifyFilter::CallbackID
TAO_Notify_ETCL_Filter::attach_callback (
CosNotifyComm::NotifySubscribe_ptr /* callback */
ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((CORBA::SystemException))
{
ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (),
0);
}
void
TAO_Notify_ETCL_Filter::detach_callback (
CosNotifyFilter::CallbackID /* callback */
ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((CORBA::SystemException,
CosNotifyFilter::CallbackNotFound))
{
ACE_THROW (CORBA::NO_IMPLEMENT ());
}
CosNotifyFilter::CallbackIDSeq *
TAO_Notify_ETCL_Filter::get_callbacks (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (),
0);
}
#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
template class ACE_Hash_Map_Entry<CosNotifyFilter::ConstraintID,TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr *>;
template class ACE_Hash_Map_Manager<CosNotifyFilter::ConstraintID,TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*,ACE_SYNCH_NULL_MUTEX>;
template class ACE_Hash_Map_Manager_Ex<CosNotifyFilter::ConstraintID,TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*,ACE_Hash<CosNotifyFilter::ConstraintID>, ACE_Equal_To<CosNotifyFilter::ConstraintID>,ACE_SYNCH_NULL_MUTEX>;
template class ACE_Hash_Map_Iterator<CosNotifyFilter::ConstraintID,TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*,ACE_SYNCH_NULL_MUTEX>;
template class ACE_Hash_Map_Iterator_Ex<CosNotifyFilter::ConstraintID,TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*,ACE_Hash<CosNotifyFilter::ConstraintID>, ACE_Equal_To<CosNotifyFilter::ConstraintID>,ACE_SYNCH_NULL_MUTEX>;
template class ACE_Hash_Map_Iterator_Base_Ex<CosNotifyFilter::ConstraintID,TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*,ACE_Hash<CosNotifyFilter::ConstraintID>, ACE_Equal_To<CosNotifyFilter::ConstraintID>,ACE_SYNCH_NULL_MUTEX>;
template class ACE_Hash_Map_Reverse_Iterator<CosNotifyFilter::ConstraintID,TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*,ACE_SYNCH_NULL_MUTEX>;
template class ACE_Hash_Map_Reverse_Iterator_Ex<CosNotifyFilter::ConstraintID,TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*,ACE_Hash<CosNotifyFilter::ConstraintID>, ACE_Equal_To<CosNotifyFilter::ConstraintID>,ACE_SYNCH_NULL_MUTEX>;
#if !defined (ACE_HAS_STD_TEMPLATE_SPECIALIZATION)
template class ACE_Equal_To<CosNotifyFilter::ConstraintID>;
#endif /* ACE_HAS_STD_TEMPLATE_SPECIALIZATION */
template class ACE_Array<TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*>;
template class ACE_Array_Base<TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*>;
template class auto_ptr<CosNotifyFilter::ConstraintInfoSeq>;
template class ACE_Auto_Basic_Ptr<CosNotifyFilter::ConstraintInfoSeq>;
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
#pragma instantiate ACE_Hash_Map_Entry<CosNotifyFilter::ConstraintID,TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*>
#pragma instantiate ACE_Hash_Map_Manager<CosNotifyFilter::ConstraintID,TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*,ACE_SYNCH_NULL_MUTEX>
#pragma instantiate ACE_Hash_Map_Manager_Ex<CosNotifyFilter::ConstraintID,TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*,ACE_Hash<CosNotifyFilter::ConstraintID>, ACE_Equal_To<CosNotifyFilter::ConstraintID>,ACE_SYNCH_NULL_MUTEX>
#pragma instantiate ACE_Hash_Map_Iterator<CosNotifyFilter::ConstraintID,TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*,ACE_SYNCH_NULL_MUTEX>
#pragma instantiate ACE_Hash_Map_Iterator_Ex<CosNotifyFilter::ConstraintID,TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*,ACE_Hash<CosNotifyFilter::ConstraintID>, ACE_Equal_To<CosNotifyFilter::ConstraintID>,ACE_SYNCH_NULL_MUTEX>
#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<CosNotifyFilter::ConstraintID,TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*,ACE_Hash<CosNotifyFilter::ConstraintID>, ACE_Equal_To<CosNotifyFilter::ConstraintID>,ACE_SYNCH_NULL_MUTEX>
#pragma instantiate ACE_Hash_Map_Reverse_Iterator<CosNotifyFilter::ConstraintID,TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*,ACE_SYNCH_NULL_MUTEX>
#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<CosNotifyFilter::ConstraintID,TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*,ACE_Hash<CosNotifyFilter::ConstraintID>, ACE_Equal_To<CosNotifyFilter::ConstraintID>,ACE_SYNCH_NULL_MUTEX>
#if !defined (ACE_HAS_STD_TEMPLATE_SPECIALIZATION)
#pragma instantiate ACE_Equal_To<CosNotifyFilter::ConstraintID>
#endif /* ACE_HAS_STD_TEMPLATE_SPECIALIZATION */
#pragma instantiate ACE_Array<TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*>
#pragma instantiate ACE_Array_Base<TAO_Notify_ETCL_Filter::TAO_Notify_Constraint_Expr*>
#pragma instantiate auto_ptr<CosNotifyFilter::ConstraintInfoSeq>
#pragma instantiate ACE_Auto_Basic_Ptr<CosNotifyFilter::ConstraintInfoSeq>
#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -