::CosNotifyFilter::Filter_ptr TAO::FT_FaultNotifier_i::create_subscription_filter ( const char * constraint_grammar ) { METHOD_ENTRY(TAO::FT_FaultNotifier_i::create_subscription_filter); ACE_UNUSED_ARG (constraint_grammar); //@@todo CosNotifyFilter::Filter_var filter = this->filter_factory_->create_filter ("ETCL"); METHOD_RETURN(TAO::FT_FaultNotifier_i::create_subscription_filter) filter._retn (); }
CosNotifyFilter::Filter_ptr TAO_Notify_ETCL_FilterFactory::find_filter (const TAO_Notify_Object::ID& id) { ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, ace_mon, this->mtx_, CosNotifyFilter::Filter::_nil ()); TAO_Notify_ETCL_Filter* filter = 0; if (filters_.find (id, filter) == -1) return CosNotifyFilter::Filter::_nil (); else { CORBA::Object_var obj = this->filter_poa_->servant_to_reference (filter); CosNotifyFilter::Filter_var filter = CosNotifyFilter::Filter::_narrow (obj.in ()); return filter._retn (); } }
static CosNotifyFilter::Filter_ptr create_proxyFilter (CosNotifyChannelAdmin::EventChannel_ptr ec) { CosNotifyFilter::FilterFactory_var ffact = ec->default_filter_factory (); CosNotifyFilter::Filter_var filter = ffact->create_filter ("EXTENDED_TCL"); if(!CORBA::is_nil(filter.in())) { CosNotifyFilter::ConstraintExpSeq constraint_list (1); constraint_list.length(1); constraint_list[0].event_types.length (0); constraint_list[0].constraint_expr = CORBA::string_dup ("$.domain_name == 'domain1'"); filter->add_constraints (constraint_list); } return filter._retn(); }
//----------------------------------------------------------------------------- int Consumer::addFilter(const char* type_name, const char* filterString) { ACS_TRACE("Consumer::addFilter"); try { //Create a temporary filter factory CosNotifyFilter::FilterFactory_var filterFactory = notifyChannel_m->default_filter_factory(); if(CORBA::is_nil(filterFactory.in()) == true) { CORBAProblemExImpl err = CORBAProblemExImpl(__FILE__,__LINE__,"nc::Consumer::addFilter"); throw err.getCORBAProblemEx(); } //Create a filter CosNotifyFilter::Filter_var filter = 0; filter = filterFactory->create_filter(getFilterLanguage()); if(filter.in() == 0) { CORBAProblemExImpl err = CORBAProblemExImpl(__FILE__,__LINE__,"nc::Consumer::addFilter"); throw err.getCORBAProblemEx(); } //Create the constraint expression sequence CosNotifyFilter::ConstraintExpSeq cexp(1); cexp.length(1); cexp[0].event_types.length(1); cexp[0].event_types[0].domain_name = getChannelDomain(); cexp[0].event_types[0].type_name = CORBA::string_dup(type_name); cexp[0].constraint_expr = CORBA::string_dup(filterString); try { filter->add_constraints(cexp); } catch(CosNotifyFilter::InvalidConstraint e) { if (filter.in() != 0) { filter->destroy(); filter = 0; } ACS_SHORT_LOG((LM_ERROR,"Consumer::addFilter failed for the '%s' channel, '%s' event type, and '%s' filter!", channelName_mp, type_name, filterString)); CORBAProblemExImpl err = CORBAProblemExImpl(__FILE__,__LINE__,"nc::Consumer::addFilter"); throw err.getCORBAProblemEx(); } return proxySupplier_m->add_filter(filter._retn()); } catch(CORBAProblemEx) { ACS_SHORT_LOG((LM_TRACE,"Consumer::addFilter failed for the '%s' channel, '%s' event type, and '%s' filter with a nil pointer!", channelName_mp, type_name, filterString)); throw; } catch(...) { ACS_SHORT_LOG((LM_ERROR,"Consumer::addFilter failed for the '%s' channel, '%s' event type, and '%s' filter!", channelName_mp, type_name, filterString)); CORBAProblemExImpl err = CORBAProblemExImpl(__FILE__,__LINE__,"nc::Consumer::addFilter"); throw err.getCORBAProblemEx(); } }