#include <DataReaderImpl.h>
Inheritance diagram for OpenDDS::DCPS::DataReaderImpl:


See the DDS specification, OMG formal/04-12-02, for a description of the interface this class is implementing.
This class must be inherited by the type-specific datareader which is specific to the data-type associated with the topic.
typedef std::map<RepoId, DDS::InstanceHandle_t> OpenDDS::DCPS::DataReaderImpl::RepoIdToHandleMap [private] |
typedef ACE_Reverse_Lock<ACE_Recursive_Thread_Mutex> OpenDDS::DCPS::DataReaderImpl::Reverse_Lock_t [protected] |
| typedef std::map< ::DDS::InstanceHandle_t, SubscriptionInstance*> OpenDDS::DCPS::DataReaderImpl::SubscriptionInstanceMapType |
typedef std::map<PublicationId, WriterInfo> OpenDDS::DCPS::DataReaderImpl::WriterMapType [private] |
| OpenDDS::DCPS::DataReaderImpl::DataReaderImpl | ( | void | ) |
| OpenDDS::DCPS::DataReaderImpl::~DataReaderImpl | ( | void | ) | [virtual] |
| void OpenDDS::DCPS::DataReaderImpl::add_associations | ( | ::OpenDDS::DCPS::RepoId | yourId, | |
| const OpenDDS::DCPS::WriterAssociationSeq & | writers | |||
| ) | throw ( CORBA::SystemException ) [virtual] |
| virtual DDS::ReturnCode_t OpenDDS::DCPS::DataReaderImpl::auto_return_loan | ( | void * | seq | ) | [pure virtual] |
This method provides virtual access to type specific code that is used when loans are automatically returned. The destructor of the sequence supporing zero-copy read calls this method on the datareader that provided the loan.
| seq | - The sequence of loaned values. |
| bool OpenDDS::DCPS::DataReaderImpl::bit_lookup_instance_handles | ( | const WriterIdSeq & | ids, | |
| ::DDS::InstanceHandleSeq & | hdls | |||
| ) | [private] |
Lookup the instance handles by the publication repo ids via the bit datareader.
| bool OpenDDS::DCPS::DataReaderImpl::cache_lookup_instance_handles | ( | const WriterIdSeq & | ids, | |
| ::DDS::InstanceHandleSeq & | hdls | |||
| ) | [private] |
Lookup the cache to get the instance handle by the publication repo ids.
| void OpenDDS::DCPS::DataReaderImpl::cleanup | ( | ) |
cleanup the DataWriter.
| bool OpenDDS::DCPS::DataReaderImpl::data_expired | ( | DataSampleHeader const & | header | ) | const [private] |
Check if the received data sample expired.
| void OpenDDS::DCPS::DataReaderImpl::data_received | ( | const ReceivedDataSample & | sample | ) | [virtual] |
process a message that has been received - could be control or a data sample.
Implements OpenDDS::DCPS::TransportReceiveListener.
| virtual void OpenDDS::DCPS::DataReaderImpl::dds_demarshal | ( | const ReceivedDataSample & | sample | ) | [pure virtual] |
| virtual void OpenDDS::DCPS::DataReaderImpl::dec_ref_data_element | ( | ReceivedDataElement * | r | ) | [pure virtual] |
| DDS::ReturnCode_t OpenDDS::DCPS::DataReaderImpl::delete_contained_entities | ( | ) | throw ( CORBA::SystemException ) |
Implements DDS::DataReader.
| void OpenDDS::DCPS::DataReaderImpl::dispose | ( | const ReceivedDataSample & | sample | ) | [virtual] |
| DDS::ReturnCode_t OpenDDS::DCPS::DataReaderImpl::enable | ( | ) | throw ( CORBA::SystemException ) |
Implements DDS::Entity.
| virtual ::DDS::ReturnCode_t OpenDDS::DCPS::DataReaderImpl::enable_specific | ( | ) | throw ( CORBA::SystemException ) [protected, pure virtual] |
| CORBA::Long OpenDDS::DCPS::DataReaderImpl::get_depth | ( | ) | const [inline] |
| ACE_INLINE::DDS::DataReader_ptr OpenDDS::DCPS::DataReaderImpl::get_dr_obj_ref | ( | ) |
| SubscriptionInstance * OpenDDS::DCPS::DataReaderImpl::get_handle_instance | ( | ::DDS::InstanceHandle_t | handle | ) | [protected] |
| DDS::DataReaderListener_ptr OpenDDS::DCPS::DataReaderImpl::get_listener | ( | ) | throw ( CORBA::SystemException ) |
Implements DDS::DataReader.
| DDS::LivelinessChangedStatus OpenDDS::DCPS::DataReaderImpl::get_liveliness_changed_status | ( | ) | throw ( CORBA::SystemException ) |
Implements DDS::DataReader.
| DDS::ReturnCode_t OpenDDS::DCPS::DataReaderImpl::get_matched_publication_data | ( | ::DDS::PublicationBuiltinTopicData & | publication_data, | |
| ::DDS::InstanceHandle_t | publication_handle | |||
| ) | throw ( CORBA::SystemException ) |
| DDS::ReturnCode_t OpenDDS::DCPS::DataReaderImpl::get_matched_publications | ( | ::DDS::InstanceHandleSeq & | publication_handles | ) | throw ( CORBA::SystemException ) |
| size_t OpenDDS::DCPS::DataReaderImpl::get_n_chunks | ( | ) | const [inline] |
| DDS::InstanceHandle_t OpenDDS::DCPS::DataReaderImpl::get_next_handle | ( | ) | [protected] |
Get an instance handle for a new instance. This method should be called under the protection of a lock to ensure that the handle is unique for the container.
| void OpenDDS::DCPS::DataReaderImpl::get_qos | ( | ::DDS::DataReaderQos & | qos | ) | throw ( CORBA::SystemException ) [virtual] |
| DDS::RequestedDeadlineMissedStatus OpenDDS::DCPS::DataReaderImpl::get_requested_deadline_missed_status | ( | ) | throw ( CORBA::SystemException ) |
Implements DDS::DataReader.
| DDS::RequestedIncompatibleQosStatus * OpenDDS::DCPS::DataReaderImpl::get_requested_incompatible_qos_status | ( | ) | throw ( CORBA::SystemException ) |
Implements DDS::DataReader.
| DDS::SampleLostStatus OpenDDS::DCPS::DataReaderImpl::get_sample_lost_status | ( | ) | throw ( CORBA::SystemException ) |
Implements DDS::DataReader.
| DDS::SampleRejectedStatus OpenDDS::DCPS::DataReaderImpl::get_sample_rejected_status | ( | ) | throw ( CORBA::SystemException ) |
Implements DDS::DataReader.
| DDS::StatusKindMask OpenDDS::DCPS::DataReaderImpl::get_status_changes | ( | ) | throw ( CORBA::SystemException ) |
Reimplemented from OpenDDS::DCPS::EntityImpl.
| DDS::Subscriber_ptr OpenDDS::DCPS::DataReaderImpl::get_subscriber | ( | ) | throw ( CORBA::SystemException ) |
Implements DDS::DataReader.
| SubscriberImpl * OpenDDS::DCPS::DataReaderImpl::get_subscriber_servant | ( | ) | [protected] |
| RepoId OpenDDS::DCPS::DataReaderImpl::get_subscription_id | ( | ) | const |
| DDS::SubscriptionMatchStatus OpenDDS::DCPS::DataReaderImpl::get_subscription_match_status | ( | ) | throw ( CORBA::SystemException ) |
Implements DDS::DataReader.
| char * OpenDDS::DCPS::DataReaderImpl::get_topic_name | ( | ) | const |
| DDS::TopicDescription_ptr OpenDDS::DCPS::DataReaderImpl::get_topicdescription | ( | ) | throw ( CORBA::SystemException ) |
Implements DDS::DataReader.
| int OpenDDS::DCPS::DataReaderImpl::handle_close | ( | ACE_HANDLE | , | |
| ACE_Reactor_Mask | ||||
| ) | [virtual] |
| int OpenDDS::DCPS::DataReaderImpl::handle_timeout | ( | const ACE_Time_Value & | tv, | |
| const void * | arg | |||
| ) | [virtual] |
Handle the assert liveliness timeout.
| bool OpenDDS::DCPS::DataReaderImpl::have_instance_states | ( | ::DDS::InstanceStateMask | instance_states | ) | const |
| bool OpenDDS::DCPS::DataReaderImpl::have_sample_states | ( | ::DDS::SampleStateMask | sample_states | ) | const |
| bool OpenDDS::DCPS::DataReaderImpl::have_view_states | ( | ::DDS::ViewStateMask | view_states | ) | const |
| void OpenDDS::DCPS::DataReaderImpl::init | ( | TopicImpl * | a_topic, | |
| const ::DDS::DataReaderQos & | qos, | |||
| ::DDS::DataReaderListener_ptr | a_listener, | |||
| DomainParticipantImpl * | participant, | |||
| SubscriberImpl * | subscriber, | |||
| ::DDS::DataReader_ptr | dr_objref, | |||
| ::OpenDDS::DCPS::DataReaderRemote_ptr | dr_remote_objref | |||
| ) | throw ( CORBA::SystemException ) [virtual] |
| bool OpenDDS::DCPS::DataReaderImpl::is_bit | ( | ) | const |
| DDS::DataReaderListener * OpenDDS::DCPS::DataReaderImpl::listener_for | ( | ::DDS::StatusKind | kind | ) |
This is used to retrieve the listener for a certain status change. If this datareader has a registered listener and the status kind is in the listener mask then the listener is returned. Otherwise, the query for the listener is propagated up to the factory/subscriber.
| void OpenDDS::DCPS::DataReaderImpl::liveliness_lost | ( | ) |
| void OpenDDS::DCPS::DataReaderImpl::notify_connection_deleted | ( | ) |
| void OpenDDS::DCPS::DataReaderImpl::notify_liveliness_change | ( | ) |
| void OpenDDS::DCPS::DataReaderImpl::notify_subscription_disconnected | ( | const WriterIdSeq & | pubids | ) |
| void OpenDDS::DCPS::DataReaderImpl::notify_subscription_lost | ( | const WriterIdSeq & | pubids | ) |
| void OpenDDS::DCPS::DataReaderImpl::notify_subscription_reconnected | ( | const WriterIdSeq & | pubids | ) |
| int OpenDDS::DCPS::DataReaderImpl::num_zero_copies | ( | ) | [virtual] |
This method is used for a precondition check of delete_datareader.
| void OpenDDS::DCPS::DataReaderImpl::release_instance | ( | ::DDS::InstanceHandle_t | handle | ) |
Release the instance with the handle.
| virtual void OpenDDS::DCPS::DataReaderImpl::release_instance_i | ( | ::DDS::InstanceHandle_t | handle | ) | [protected, pure virtual] |
| void OpenDDS::DCPS::DataReaderImpl::remove_all_associations | ( | ) |
| void OpenDDS::DCPS::DataReaderImpl::remove_associations | ( | const OpenDDS::DCPS::WriterIdSeq & | writers, | |
| ::CORBA::Boolean | callback | |||
| ) | throw ( CORBA::SystemException ) [virtual] |
| void OpenDDS::DCPS::DataReaderImpl::sample_info | ( | ::DDS::SampleInfo & | sample_info, | |
| ReceivedDataElement * | ptr | |||
| ) | [protected] |
| void OpenDDS::DCPS::DataReaderImpl::sample_info | ( | ::DDS::SampleInfoSeq & | info_seq, | |
| size_t | start_idx, | |||
| size_t | count, | |||
| ReceivedDataElement * | ptr | |||
| ) | [protected] |
| DDS::ReturnCode_t OpenDDS::DCPS::DataReaderImpl::set_listener | ( | ::DDS::DataReaderListener_ptr | a_listener, | |
| ::DDS::StatusKindMask | mask | |||
| ) | throw ( CORBA::SystemException ) |
| DDS::ReturnCode_t OpenDDS::DCPS::DataReaderImpl::set_qos | ( | const ::DDS::DataReaderQos & | qos | ) | throw ( CORBA::SystemException ) |
| void OpenDDS::DCPS::DataReaderImpl::set_sample_lost_status | ( | const ::DDS::SampleLostStatus & | status | ) | [protected] |
| void OpenDDS::DCPS::DataReaderImpl::set_sample_rejected_status | ( | const ::DDS::SampleRejectedStatus & | status | ) | [protected] |
| void OpenDDS::DCPS::DataReaderImpl::set_subscription_id | ( | RepoId | subscription_id | ) |
| CORBA::Long OpenDDS::DCPS::DataReaderImpl::total_samples | ( | ) | const [protected] |
| void OpenDDS::DCPS::DataReaderImpl::unregister | ( | const ReceivedDataSample & | sample | ) | [virtual] |
| void OpenDDS::DCPS::DataReaderImpl::update_incompatible_qos | ( | const OpenDDS::DCPS::IncompatibleQosStatus & | status | ) | throw ( CORBA::SystemException ) [virtual] |
| DDS::ReturnCode_t OpenDDS::DCPS::DataReaderImpl::wait_for_historical_data | ( | const ::DDS::Duration_t & | max_wait | ) | throw ( CORBA::SystemException ) |
| void OpenDDS::DCPS::DataReaderImpl::writer_activity | ( | PublicationId | writer_id | ) |
update liveliness info for this writer.
| void OpenDDS::DCPS::DataReaderImpl::writer_became_alive | ( | PublicationId | writer_id, | |
| const ACE_Time_Value & | when, | |||
| WriterInfo::WriterState & | state | |||
| ) |
tell instances when a DataWriter transitions to being alive The writer state is inout parameter, it has to be set ALIVE before handle_timeout is called since some subroutine use the state.
| void OpenDDS::DCPS::DataReaderImpl::writer_became_dead | ( | PublicationId | writer_id, | |
| const ACE_Time_Value & | when, | |||
| WriterInfo::WriterState & | state | |||
| ) |
tell instances when a DataWriter transitions to DEAD The writer state is inout parameter, the state is set to DEAD when it returns.
| void OpenDDS::DCPS::DataReaderImpl::writer_removed | ( | PublicationId | writer_id, | |
| WriterInfo::WriterState & | state | |||
| ) |
tell instance when a DataWriter is removed. The liveliness status need update.
friend class ::DDS_TEST [friend] |
friend class WriterInfo [friend] |
CORBA::Long OpenDDS::DCPS::DataReaderImpl::depth_ [private] |
::DDS::DataReader_var OpenDDS::DCPS::DataReaderImpl::dr_local_objref_ [private] |
DataReaderRemote_var OpenDDS::DCPS::DataReaderImpl::dr_remote_objref_ [private] |
bool OpenDDS::DCPS::DataReaderImpl::initialized_ [private] |
Flag indicates that the init() is called.
SubscriptionInstanceMapType OpenDDS::DCPS::DataReaderImpl::instances_ [mutable, protected] |
bool OpenDDS::DCPS::DataReaderImpl::is_bit_ [private] |
Flag indicates that this datareader is a builtin topic datareader.
CORBA::Long OpenDDS::DCPS::DataReaderImpl::last_deadline_missed_total_count_ [private] |
::DDS::DataReaderListener_var OpenDDS::DCPS::DataReaderImpl::listener_ [private] |
ACE_Time_Value OpenDDS::DCPS::DataReaderImpl::liveliness_lease_duration_ [private] |
The time interval for checking liveliness. TBD: Should this be initialized with DDS::DURATION_INFINITY_SEC and DDS::DURATION_INFINITY_NSEC instead of ACE_Time_Value::zero to be consistent with default duration qos ? Or should we simply use the ACE_Time_Value::zero to indicate the INFINITY duration ?
long OpenDDS::DCPS::DataReaderImpl::liveliness_timer_id_ [private] |
liveliness timer id; -1 if no timer is set
size_t OpenDDS::DCPS::DataReaderImpl::n_chunks_ [private] |
The instance handle for the next new instance.
ACE_Recursive_Thread_Mutex OpenDDS::DCPS::DataReaderImpl::publication_handle_lock_ [private] |
::DDS::DataReaderQos OpenDDS::DCPS::DataReaderImpl::qos_ [protected] |
ACE_Reactor* OpenDDS::DCPS::DataReaderImpl::reactor_ [private] |
The orb's reactor to be used to register the liveliness timer.
::DDS::RequestedDeadlineMissedStatus OpenDDS::DCPS::DataReaderImpl::requested_deadline_missed_status_ [private] |
::DDS::RequestedIncompatibleQosStatus OpenDDS::DCPS::DataReaderImpl::requested_incompatible_qos_status_ [private] |
ACE_Recursive_Thread_Mutex OpenDDS::DCPS::DataReaderImpl::sample_lock_ [protected] |
lock protecting sample container as well as statuses.
::DDS::TopicDescription_var OpenDDS::DCPS::DataReaderImpl::topic_desc_ [private] |
std::auto_ptr<RequestedDeadlineWatchdog> OpenDDS::DCPS::DataReaderImpl::watchdog_ [ |