OpenDDS  Snapshot(2023/04/07-19:43)
Classes | Public Member Functions | Private Attributes | List of all members
OpenDDS::DCPS::MultiTopicImpl Class Reference

#include <MultiTopicImpl.h>

Inheritance diagram for OpenDDS::DCPS::MultiTopicImpl:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::MultiTopicImpl:
Collaboration graph
[legend]

Classes

struct  SubjectFieldSpec
 

Public Member Functions

 MultiTopicImpl (const char *name, const char *type_name, const char *subscription_expression, const DDS::StringSeq &expression_parameters, DomainParticipantImpl *participant)
 
virtual ~MultiTopicImpl ()
 
char * get_subscription_expression ()
 
DDS::ReturnCode_t get_expression_parameters (DDS::StringSeq &parameters)
 
DDS::ReturnCode_t set_expression_parameters (const DDS::StringSeq &parameters)
 
const std::vector< SubjectFieldSpec > & get_aggregation () const
 
const std::vector< OPENDDS_STRING > & get_selection () const
 
template<typename Sample >
bool filter (const Sample &s) const
 
- Public Member Functions inherited from DDS::MultiTopic
ReturnCode_t get_expression_parameters (inout StringSeq params)
 
ReturnCode_t set_expression_parameters (in StringSeq expression_parameters)
 
- Public Member Functions inherited from OpenDDS::DCPS::LocalObjectBase
virtual void _add_ref ()
 
virtual void _remove_ref ()
 
virtual CORBA::ULong _refcount_value () const
 
- Public Member Functions inherited from CORBA::LocalObject
virtual ~LocalObject (void)
 
virtual CORBA::Boolean _non_existent (void)
 
virtual char * _repository_id (void)
 
virtual CORBA::InterfaceDef_ptr _get_interface (void)
 
virtual CORBA::Object_ptr _get_component (void)
 
virtual void _create_request (CORBA::Context_ptr ctx, const char *operation, CORBA::NVList_ptr arg_list, CORBA::NamedValue_ptr result, CORBA::Request_ptr &request, CORBA::Flags req_flags)
 
virtual void _create_request (CORBA::Context_ptr ctx, const char *operation, CORBA::NVList_ptr arg_list, CORBA::NamedValue_ptr result, CORBA::ExceptionList_ptr exclist, CORBA::ContextList_ptr ctxtlist, CORBA::Request_ptr &request, CORBA::Flags req_flags)
 
virtual CORBA::Request_ptr _request (const char *operation)
 
CORBA::Policy_ptr _get_policy (CORBA::PolicyType type)
 
CORBA::Policy_ptr _get_cached_policy (TAO_Cached_Policy_Type type)
 
CORBA::Object_ptr _set_policy_overrides (const CORBA::PolicyList &policies, CORBA::SetOverrideType set_add)
 
CORBA::PolicyList_get_policy_overrides (const CORBA::PolicyTypeSeq &types)
 
CORBA::Boolean _validate_connection (CORBA::PolicyList_out inconsistent_policies)
 
virtual CORBA::ULong _hash (CORBA::ULong maximum)
 
virtual CORBA::Boolean _is_equivalent (CORBA::Object_ptr other_obj)
 
virtual CORBA::ORB_ptr _get_orb (void)
 
virtual TAO::ObjectKey_key (void)
 
- Public Member Functions inherited from CORBA::Object
virtual ~Object (void)
 
virtual TAO_Abstract_ServantBase_servant (void) const
 
virtual CORBA::Boolean _is_collocated (void) const
 
virtual CORBA::Boolean _is_local (void) const
 
 Object (TAO_Stub *p, CORBA::Boolean collocated=false, TAO_Abstract_ServantBase *servant=0, TAO_ORB_Core *orb_core=0)
 
 Object (IOP::IOR *ior, TAO_ORB_Core *orb_core)
 
virtual TAO_Stub_stubobj (void) const
 
virtual TAO_Stub_stubobj (void)
 
virtual void _proxy_broker (TAO::Object_Proxy_Broker *proxy_broker)
 
virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr)
 
CORBA::Boolean is_evaluated (void) const
 
TAO_ORB_Coreorb_core (void) const
 
IOP::IORsteal_ior (void)
 
const IOP::IORior (void) const
 
virtual bool can_convert_to_ior (void) const
 
virtual char * convert_to_ior (bool use_omg_ior_format, const char *ior_prefix) const
 
void _decr_refcount (void)
 
virtual CORBA::Boolean _is_a (const char *logical_type_id)
 
virtual const char * _interface_repository_id (void) const
 
CORBA::Policy_ptr _get_policy (CORBA::PolicyType type)
 
CORBA::Policy_ptr _get_cached_policy (TAO_Cached_Policy_Type type)
 
CORBA::Object_ptr _set_policy_overrides (const CORBA::PolicyList &policies, CORBA::SetOverrideType set_add)
 
CORBA::PolicyList_get_policy_overrides (const CORBA::PolicyTypeSeq &types)
 
CORBA::Boolean _validate_connection (CORBA::PolicyList_out inconsistent_policies)
 
- Public Member Functions inherited from OpenDDS::DCPS::RcObject
virtual ~RcObject ()
 
long ref_count () const
 
WeakObject_get_weak_object () const
 
- Public Member Functions inherited from OpenDDS::DCPS::TopicDescriptionImpl
 TopicDescriptionImpl (const char *topic_name, const char *type_name, TypeSupport_ptr type_support, DomainParticipantImpl *participant)
 
virtual ~TopicDescriptionImpl ()
 
virtual char * get_type_name ()
 
virtual char * get_name ()
 
virtual DDS::DomainParticipant_ptr get_participant ()
 
OpenDDS::DCPS::TypeSupport_ptr get_type_support ()
 
bool has_entity_refs () const
 
void add_entity_ref ()
 
void remove_entity_ref ()
 

Private Attributes

OPENDDS_STRING subscription_expression_
 
DDS::StringSeq expression_parameters_
 
unique_ptr< FilterEvaluatorfilter_eval_
 
std::vector< SubjectFieldSpecaggregation_
 
std::vector< OPENDDS_STRINGselection_
 
ACE_Recursive_Thread_Mutex lock_
 Concurrent access to expression_parameters_. More...
 

Additional Inherited Members

- Public Types inherited from OpenDDS::DCPS::LocalObject< DDS::MultiTopic >
typedef DDS::MultiTopic ::_ptr_type _ptr_type
 
typedef DDS::MultiTopic ::_var_type _var_type
 
- Public Types inherited from CORBA::LocalObject
typedef LocalObject_ptr _ptr_type
 
typedef LocalObject_var _var_type
 
typedef LocalObject_out _out_type
 
- Public Types inherited from CORBA::Object
typedef Object_ptr _ptr_type
 
typedef Object_var _var_type
 
typedef Object_out _out_type
 
- Public Types inherited from OpenDDS::DCPS::LocalObject< DDS::TopicDescription >
typedef DDS::TopicDescription ::_ptr_type _ptr_type
 
typedef DDS::TopicDescription ::_var_type _var_type
 
- Static Public Member Functions inherited from OpenDDS::DCPS::LocalObject< DDS::MultiTopic >
static _ptr_type _narrow (CORBA::Object_ptr obj)
 
- Static Public Member Functions inherited from CORBA::LocalObject
static LocalObject_ptr _duplicate (LocalObject_ptr obj)
 
static LocalObject_ptr _nil (void)
 
static LocalObject_ptr _narrow (CORBA::Object_ptr obj)
 
- Static Public Member Functions inherited from CORBA::Object
static CORBA::Boolean marshal (const Object_ptr x, TAO_OutputCDR &cdr)
 
static void _tao_any_destructor (void *)
 
static CORBA::Boolean is_nil_i (CORBA::Object_ptr obj)
 
static void tao_object_initialize (Object *)
 
static CORBA::Object_ptr _duplicate (CORBA::Object_ptr obj)
 
static CORBA::Object_ptr _nil (void)
 
static CORBA::Object_ptr _narrow (CORBA::Object_ptr obj)
 
- Static Public Member Functions inherited from OpenDDS::DCPS::LocalObject< DDS::TopicDescription >
static _ptr_type _narrow (CORBA::Object_ptr obj)
 
- Protected Member Functions inherited from CORBA::LocalObject
 LocalObject (void)
 
- Protected Member Functions inherited from CORBA::Object
 Object (int dummy=0)
 
TAO::Object_Proxy_Brokerproxy_broker () const
 
- Protected Member Functions inherited from OpenDDS::DCPS::RcObject
 RcObject ()
 
- Protected Attributes inherited from CORBA::Object
ACE_Atomic_Op< TAO_SYNCH_MUTEX, unsigned long > refcount_
 
- Protected Attributes inherited from OpenDDS::DCPS::TopicDescriptionImpl
ACE_CString topic_name_
 The name of the topic. More...
 
ACE_CString type_name_
 The datatype of the topic. More...
 
DomainParticipantImplparticipant_
 The participant that creates this topic. More...
 
OpenDDS::DCPS::TypeSupport_var type_support_
 The type_support for this topic. More...
 
Atomic< ACE_UINT32 > entity_refs_
 The number of entities using this topic. More...
 

Detailed Description

Definition at line 28 of file MultiTopicImpl.h.

Constructor & Destructor Documentation

◆ MultiTopicImpl()

OpenDDS::DCPS::MultiTopicImpl::MultiTopicImpl ( const char *  name,
const char *  type_name,
const char *  subscription_expression,
const DDS::StringSeq expression_parameters,
DomainParticipantImpl participant 
)

Definition at line 39 of file MultiTopicImpl.cpp.

References aggregation_, filter_eval_, OpenDDS::DCPS::reportErrors(), selection_, and OpenDDS::DCPS::toString().

43  : TopicDescriptionImpl(name, type_name,
44  findTypeSupport(participant, type_name),
45  participant)
46  , subscription_expression_(subscription_expression)
47  , expression_parameters_(expression_parameters)
48 {
49  const char* out = subscription_expression
50  + std::strlen(subscription_expression);
51  yard::SimpleTextParser parser(subscription_expression, out);
52  if (!parser.Parse<TopicExpressionGrammar::TopicCompleteInput>()) {
53  reportErrors(parser, subscription_expression);
54  }
55 
56  for (AstNode* iter = parser.GetAstRoot()->GetFirstChild(); iter;
57  iter = iter->GetSibling()) {
58  if (iter->TypeMatches<TopicExpressionGrammar::SubjectFieldSpec>()) {
59  AstNode* fieldName = iter->GetFirstChild();
60  aggregation_.push_back(SubjectFieldSpec(toString(fieldName),
61  toString(fieldName->GetSibling())));
62  } else if (iter->TypeMatches<TopicExpressionGrammar::TopicName>()) {
63  selection_.push_back(toString(iter));
64  } else {
65  filter_eval_.reset(new FilterEvaluator(iter));
66  }
67  }
68 }
OPENDDS_STRING subscription_expression_
yard::TreeBuildingParser< char >::Node AstNode
unique_ptr< FilterEvaluator > filter_eval_
std::vector< OPENDDS_STRING > selection_
const char *const name
Definition: debug.cpp:60
OPENDDS_STRING toString(yard::TreeBuildingParser< char >::Node *iter)
void reportErrors(yard::SimpleTextParser &parser, const char *input)
called after parsing has failed, throws std::exception with details
TopicDescriptionImpl(const char *topic_name, const char *type_name, TypeSupport_ptr type_support, DomainParticipantImpl *participant)
DDS::StringSeq expression_parameters_
std::vector< SubjectFieldSpec > aggregation_

◆ ~MultiTopicImpl()

OpenDDS::DCPS::MultiTopicImpl::~MultiTopicImpl ( )
virtual

Definition at line 70 of file MultiTopicImpl.cpp.

71 {
72 }

Member Function Documentation

◆ filter()

template<typename Sample >
bool OpenDDS::DCPS::MultiTopicImpl::filter ( const Sample s) const
inline

Definition at line 67 of file MultiTopicImpl.h.

References ACE_GUARD_RETURN, and lock_.

68  {
69  if (!filter_eval_) return true;
71  return filter_eval_->eval(s, expression_parameters_);
72  }
ACE_Recursive_Thread_Mutex lock_
Concurrent access to expression_parameters_.
unique_ptr< FilterEvaluator > filter_eval_
#define ACE_GUARD_RETURN(MUTEX, OBJ, LOCK, RETURN)
DDS::StringSeq expression_parameters_

◆ get_aggregation()

const std::vector<SubjectFieldSpec>& OpenDDS::DCPS::MultiTopicImpl::get_aggregation ( ) const
inline

Definition at line 56 of file MultiTopicImpl.h.

Referenced by OpenDDS::DCPS::MultiTopicDataReaderBase::init().

57  {
58  return aggregation_;
59  }
std::vector< SubjectFieldSpec > aggregation_

◆ get_expression_parameters()

DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicImpl::get_expression_parameters ( DDS::StringSeq parameters)

Definition at line 80 of file MultiTopicImpl.cpp.

References ACE_GUARD_RETURN, expression_parameters_, lock_, DDS::RETCODE_OK, and DDS::RETCODE_OUT_OF_RESOURCES.

81 {
84  params = expression_parameters_;
85  return DDS::RETCODE_OK;
86 }
const ReturnCode_t RETCODE_OK
ACE_Recursive_Thread_Mutex lock_
Concurrent access to expression_parameters_.
#define ACE_GUARD_RETURN(MUTEX, OBJ, LOCK, RETURN)
const ReturnCode_t RETCODE_OUT_OF_RESOURCES
DDS::StringSeq expression_parameters_

◆ get_selection()

const std::vector<OPENDDS_STRING>& OpenDDS::DCPS::MultiTopicImpl::get_selection ( ) const
inline

Definition at line 61 of file MultiTopicImpl.h.

Referenced by OpenDDS::DCPS::MultiTopicDataReaderBase::init().

62  {
63  return selection_;
64  }
std::vector< OPENDDS_STRING > selection_

◆ get_subscription_expression()

char * OpenDDS::DCPS::MultiTopicImpl::get_subscription_expression ( )

Implements DDS::MultiTopic.

Definition at line 74 of file MultiTopicImpl.cpp.

References CORBA::string_dup(), and subscription_expression_.

75 {
77 }
OPENDDS_STRING subscription_expression_
char * string_dup(const char *)

◆ set_expression_parameters()

DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicImpl::set_expression_parameters ( const DDS::StringSeq parameters)

Definition at line 89 of file MultiTopicImpl.cpp.

References ACE_GUARD_RETURN, expression_parameters_, lock_, OPENDDS_END_VERSIONED_NAMESPACE_DECL, DDS::RETCODE_OK, and DDS::RETCODE_OUT_OF_RESOURCES.

90 {
94  return DDS::RETCODE_OK;
95 }
const ReturnCode_t RETCODE_OK
ACE_Recursive_Thread_Mutex lock_
Concurrent access to expression_parameters_.
#define ACE_GUARD_RETURN(MUTEX, OBJ, LOCK, RETURN)
const ReturnCode_t RETCODE_OUT_OF_RESOURCES
DDS::StringSeq expression_parameters_

Member Data Documentation

◆ aggregation_

std::vector<SubjectFieldSpec> OpenDDS::DCPS::MultiTopicImpl::aggregation_
private

Definition at line 79 of file MultiTopicImpl.h.

Referenced by MultiTopicImpl().

◆ expression_parameters_

DDS::StringSeq OpenDDS::DCPS::MultiTopicImpl::expression_parameters_
private

Definition at line 76 of file MultiTopicImpl.h.

Referenced by get_expression_parameters(), and set_expression_parameters().

◆ filter_eval_

unique_ptr<FilterEvaluator> OpenDDS::DCPS::MultiTopicImpl::filter_eval_
private

Definition at line 77 of file MultiTopicImpl.h.

Referenced by MultiTopicImpl().

◆ lock_

ACE_Recursive_Thread_Mutex OpenDDS::DCPS::MultiTopicImpl::lock_
mutableprivate

Concurrent access to expression_parameters_.

Definition at line 83 of file MultiTopicImpl.h.

Referenced by get_expression_parameters(), and set_expression_parameters().

◆ selection_

std::vector<OPENDDS_STRING> OpenDDS::DCPS::MultiTopicImpl::selection_
private

Definition at line 80 of file MultiTopicImpl.h.

Referenced by MultiTopicImpl().

◆ subscription_expression_

OPENDDS_STRING OpenDDS::DCPS::MultiTopicImpl::subscription_expression_
private

Definition at line 75 of file MultiTopicImpl.h.

Referenced by get_subscription_expression().


The documentation for this class was generated from the following files: