OpenDDS  Snapshot(2023/04/28-20:55)
Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
OpenDDS::FaceTSS::Listener< Msg > Class Template Reference

#include <FaceTSS.h>

Inheritance diagram for OpenDDS::FaceTSS::Listener< Msg >:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::FaceTSS::Listener< Msg >:
Collaboration graph
[legend]

Public Types

typedef void(* Callback) (FACE::TRANSACTION_ID_TYPE, Msg &, FACE::MESSAGE_TYPE_GUID, FACE::MESSAGE_SIZE_TYPE, const FACE::WAITSET_TYPE, FACE::RETURN_CODE_TYPE &)
 
- Public Types inherited from OpenDDS::DCPS::LocalObject< DDS::DataReaderListener >
typedef DDS::DataReaderListener ::_ptr_type _ptr_type
 
typedef DDS::DataReaderListener ::_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 Member Functions

 Listener (Callback callback, FACE::CONNECTION_ID_TYPE connection_id)
 
void add_callback (Callback callback)
 
- Public Member Functions inherited from DDS::DataReaderListener
void on_requested_deadline_missed (in DataReader reader, in RequestedDeadlineMissedStatus status)
 
void on_requested_incompatible_qos (in DataReader reader, in RequestedIncompatibleQosStatus status)
 
void on_sample_rejected (in DataReader reader, in SampleRejectedStatus status)
 
void on_liveliness_changed (in DataReader reader, in LivelinessChangedStatus status)
 
void on_data_available (in DataReader reader)
 
void on_subscription_matched (in DataReader reader, in SubscriptionMatchedStatus status)
 
void on_sample_lost (in DataReader reader, in SampleLostStatus status)
 
- 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
 

Private Types

typedef ACE_SYNCH_MUTEX LockType
 
typedef ACE_Guard< LockTypeGuardType
 

Private Member Functions

void on_requested_deadline_missed (DDS::DataReader_ptr, const DDS::RequestedDeadlineMissedStatus &)
 
void on_requested_incompatible_qos (DDS::DataReader_ptr, const DDS::RequestedIncompatibleQosStatus &)
 
void on_sample_rejected (DDS::DataReader_ptr, const DDS::SampleRejectedStatus &)
 
void on_liveliness_changed (DDS::DataReader_ptr, const DDS::LivelinessChangedStatus &)
 
void on_subscription_matched (DDS::DataReader_ptr, const DDS::SubscriptionMatchedStatus &)
 
void on_sample_lost (DDS::DataReader_ptr, const DDS::SampleLostStatus &)
 
void on_data_available (DDS::DataReader_ptr reader)
 
 OPENDDS_VECTOR (Callback) callbacks_
 

Private Attributes

LockType callbacks_lock_
 
const FACE::CONNECTION_ID_TYPE connection_id_
 

Additional Inherited Members

- Static Public Member Functions inherited from OpenDDS::DCPS::LocalObject< DDS::DataReaderListener >
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)
 
- 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_
 

Detailed Description

template<typename Msg>
class OpenDDS::FaceTSS::Listener< Msg >

Definition at line 275 of file FaceTSS.h.

Member Typedef Documentation

◆ Callback

template<typename Msg>
typedef void(* OpenDDS::FaceTSS::Listener< Msg >::Callback) (FACE::TRANSACTION_ID_TYPE, Msg &, FACE::MESSAGE_TYPE_GUID, FACE::MESSAGE_SIZE_TYPE, const FACE::WAITSET_TYPE, FACE::RETURN_CODE_TYPE &)

Definition at line 277 of file FaceTSS.h.

◆ GuardType

template<typename Msg>
typedef ACE_Guard<LockType> OpenDDS::FaceTSS::Listener< Msg >::GuardType
private

Definition at line 355 of file FaceTSS.h.

◆ LockType

template<typename Msg>
typedef ACE_SYNCH_MUTEX OpenDDS::FaceTSS::Listener< Msg >::LockType
private

Definition at line 354 of file FaceTSS.h.

Constructor & Destructor Documentation

◆ Listener()

template<typename Msg>
OpenDDS::FaceTSS::Listener< Msg >::Listener ( Callback  callback,
FACE::CONNECTION_ID_TYPE  connection_id 
)
inline

Definition at line 283 of file FaceTSS.h.

284  : connection_id_(connection_id)
285  {
286  callbacks_.push_back(callback);
287  }
const FACE::CONNECTION_ID_TYPE connection_id_
Definition: FaceTSS.h:358

Member Function Documentation

◆ add_callback()

template<typename Msg>
void OpenDDS::FaceTSS::Listener< Msg >::add_callback ( Callback  callback)
inline

Definition at line 289 of file FaceTSS.h.

Referenced by OpenDDS::FaceTSS::register_callback().

289  {
290  GuardType guard(callbacks_lock_);
291  callbacks_.push_back(callback);
292  }
ACE_Guard< LockType > GuardType
Definition: FaceTSS.h:355

◆ on_data_available()

template<typename Msg>
void OpenDDS::FaceTSS::Listener< Msg >::on_data_available ( DDS::DataReader_ptr  reader)
inlineprivate

Definition at line 312 of file FaceTSS.h.

References ACE_DEBUG, ACE_ERROR, OpenDDS::DCPS::DCPS_debug_level, OpenDDS::FaceTSS::Entities::instance(), LM_DEBUG, LM_ERROR, OpenDDS::FaceTSS::populate_header_received(), OpenDDS::FaceTSS::Entities::receivers_, DDS::RETCODE_BAD_PARAMETER, DDS::RETCODE_OK, OpenDDS::FaceTSS::update_status(), and DDS::SampleInfo::valid_data.

313  {
314  typedef typename DCPS::DDSTraits<Msg>::DataReaderType DataReader;
315  const typename DataReader::_var_type typedReader =
316  DataReader::_narrow(reader);
317  if (!typedReader) {
319  return;
320  }
321 
322  FACE::MESSAGE_TYPE_GUID& msg_id = Entities::instance()->connections_[connection_id_].platform_view_guid;
323  Msg sample;
324  DDS::SampleInfo sinfo;
325  while (typedReader->take_next_sample(sample, sinfo) == DDS::RETCODE_OK) {
326  if (sinfo.valid_data) {
327  DDS::Subscriber_var subscriber = typedReader->get_subscriber();
328  DDS::DomainParticipant_var participant = subscriber->get_participant();
329  FACE::RETURN_CODE_TYPE ret_code;
330  populate_header_received(connection_id_, participant, sinfo, ret_code);
331  if (ret_code != FACE::RC_NO_ERROR) {
332  update_status(connection_id_, ret_code);
333  return;
334  }
335 
336  FACE::TRANSACTION_ID_TYPE transaction_id = ++Entities::instance()->receivers_[connection_id_]->last_msg_tid;
338  FACE::RETURN_CODE_TYPE retcode;
339  GuardType guard(callbacks_lock_);
341  ACE_DEBUG((LM_DEBUG, "Listener::on_data_available - invoking %d callbacks\n", callbacks_.size()));
342  }
343  for (size_t i = 0; i < callbacks_.size(); ++i) {
344  retcode = FACE::RC_NO_ERROR;
345  callbacks_.at(i)(transaction_id /*Transaction_ID*/, sample, msg_id, sizeof(Msg), 0 /*WAITSET_TYPE*/, retcode);
346  if (retcode != FACE::RC_NO_ERROR) {
347  ACE_ERROR((LM_ERROR, "ERROR: Listener::on_data_available - callback %d returned retcode: %d\n", i, retcode));
348  }
349  }
350  }
351  }
352  }
#define ACE_DEBUG(X)
void populate_header_received(const FACE::CONNECTION_ID_TYPE &connection_id, const DDS::DomainParticipant_var part, const DDS::SampleInfo &sinfo, FACE::RETURN_CODE_TYPE &return_code)
Definition: FaceTSS.cpp:852
#define ACE_ERROR(X)
local interface<%TYPE%> DataReader
Definition: IDLTemplate.txt:72
ConnIdToReceiverMap receivers_
Definition: FaceTSS.h:70
ACE_Guard< LockType > GuardType
Definition: FaceTSS.h:355
const FACE::CONNECTION_ID_TYPE connection_id_
Definition: FaceTSS.h:358
static OpenDDS_FACE_Export Entities * instance()
Definition: FaceTSS.cpp:725
FACE::RETURN_CODE_TYPE update_status(FACE::CONNECTION_ID_TYPE connection_id, DDS::ReturnCode_t retcode)
Definition: FaceTSS.cpp:730
OpenDDS_Dcps_Export unsigned int DCPS_debug_level
Definition: debug.cpp:30
const ReturnCode_t RETCODE_OK
const ReturnCode_t RETCODE_BAD_PARAMETER

◆ on_liveliness_changed()

template<typename Msg>
void OpenDDS::FaceTSS::Listener< Msg >::on_liveliness_changed ( DDS::DataReader_ptr  ,
const DDS::LivelinessChangedStatus  
)
inlineprivate

Definition at line 304 of file FaceTSS.h.

305  {}

◆ on_requested_deadline_missed()

template<typename Msg>
void OpenDDS::FaceTSS::Listener< Msg >::on_requested_deadline_missed ( DDS::DataReader_ptr  ,
const DDS::RequestedDeadlineMissedStatus  
)
inlineprivate

Definition at line 295 of file FaceTSS.h.

296  {}

◆ on_requested_incompatible_qos()

template<typename Msg>
void OpenDDS::FaceTSS::Listener< Msg >::on_requested_incompatible_qos ( DDS::DataReader_ptr  ,
const DDS::RequestedIncompatibleQosStatus  
)
inlineprivate

Definition at line 298 of file FaceTSS.h.

299  {}

◆ on_sample_lost()

template<typename Msg>
void OpenDDS::FaceTSS::Listener< Msg >::on_sample_lost ( DDS::DataReader_ptr  ,
const DDS::SampleLostStatus  
)
inlineprivate

Definition at line 310 of file FaceTSS.h.

310 {}

◆ on_sample_rejected()

template<typename Msg>
void OpenDDS::FaceTSS::Listener< Msg >::on_sample_rejected ( DDS::DataReader_ptr  ,
const DDS::SampleRejectedStatus  
)
inlineprivate

Definition at line 301 of file FaceTSS.h.

302  {}

◆ on_subscription_matched()

template<typename Msg>
void OpenDDS::FaceTSS::Listener< Msg >::on_subscription_matched ( DDS::DataReader_ptr  ,
const DDS::SubscriptionMatchedStatus  
)
inlineprivate

Definition at line 307 of file FaceTSS.h.

308  {}

◆ OPENDDS_VECTOR()

template<typename Msg>
OpenDDS::FaceTSS::Listener< Msg >::OPENDDS_VECTOR ( Callback  )
private

Member Data Documentation

◆ callbacks_lock_

template<typename Msg>
LockType OpenDDS::FaceTSS::Listener< Msg >::callbacks_lock_
private

Definition at line 356 of file FaceTSS.h.

◆ connection_id_

template<typename Msg>
const FACE::CONNECTION_ID_TYPE OpenDDS::FaceTSS::Listener< Msg >::connection_id_
private

Definition at line 358 of file FaceTSS.h.


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