OpenDDS::DCPS::DataWriterImpl Class Reference

Implements the OpenDDS::DCPS::DataWriterRemote interfaces and DDS::DataWriter interfaces. More...

#include <DataWriterImpl.h>

Inheritance diagram for OpenDDS::DCPS::DataWriterImpl:

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

Collaboration graph
[legend]
List of all members.

Public Types

typedef std::map< RepoId,
SequenceNumber, GUID_tKeyLessThan
RepoIdToSequenceMap
typedef std::vector< DDS::InstanceHandle_tInstanceHandleVec
typedef std::set< RepoId,
GUID_tKeyLessThan
IdSet

Public Member Functions

 DataWriterImpl ()
 Constructor.
virtual ~DataWriterImpl ()
 Destructor.
virtual DDS::InstanceHandle_t get_instance_handle () throw (CORBA::SystemException)
virtual DDS::ReturnCode_t set_qos (const DDS::DataWriterQos &qos) throw (CORBA::SystemException)
virtual DDS::ReturnCode_t get_qos (DDS::DataWriterQos &qos) throw (CORBA::SystemException)
virtual DDS::ReturnCode_t set_listener (DDS::DataWriterListener_ptr a_listener, DDS::StatusMask mask) throw (CORBA::SystemException)
virtual DDS::DataWriterListener_ptr get_listener () throw (CORBA::SystemException)
virtual DDS::Topic_ptr get_topic () throw (CORBA::SystemException)
virtual DDS::ReturnCode_t wait_for_acknowledgments (const DDS::Duration_t &max_wait) throw (CORBA::SystemException)
virtual DDS::Publisher_ptr get_publisher () throw (CORBA::SystemException)
virtual DDS::ReturnCode_t get_liveliness_lost_status (DDS::LivelinessLostStatus &status) throw (CORBA::SystemException)
virtual DDS::ReturnCode_t get_offered_deadline_missed_status (DDS::OfferedDeadlineMissedStatus &status) throw (CORBA::SystemException)
virtual DDS::ReturnCode_t get_offered_incompatible_qos_status (DDS::OfferedIncompatibleQosStatus &status) throw (CORBA::SystemException)
virtual DDS::ReturnCode_t get_publication_matched_status (DDS::PublicationMatchedStatus &status) throw (CORBA::SystemException)
virtual DDS::ReturnCode_t assert_liveliness () throw (CORBA::SystemException)
virtual DDS::ReturnCode_t assert_liveliness_by_participant ()
void get_instance_handles (InstanceHandleVec &instance_handles)
void get_readers (IdSet &readers)
virtual DDS::ReturnCode_t get_matched_subscriptions (DDS::InstanceHandleSeq &subscription_handles) throw (CORBA::SystemException)
virtual DDS::ReturnCode_t get_matched_subscription_data (DDS::SubscriptionBuiltinTopicData &subscription_data, DDS::InstanceHandle_t subscription_handle) throw (CORBA::SystemException)
virtual DDS::ReturnCode_t enable () throw (CORBA::SystemException)
void add_association (const RepoId &yourId, const ReaderAssociation &reader, bool active)
void association_complete (const RepoId &remote_id)
void remove_associations (const ReaderIdSeq &readers, bool callback)
void update_incompatible_qos (const IncompatibleQosStatus &status)
void update_subscription_params (const RepoId &readerId, const DDS::StringSeq &params)
void cleanup ()
virtual void init (DDS::Topic_ptr topic, TopicImpl *topic_servant, const DDS::DataWriterQos &qos, DDS::DataWriterListener_ptr a_listener, const DDS::StatusMask &mask, OpenDDS::DCPS::DomainParticipantImpl *participant_servant, OpenDDS::DCPS::PublisherImpl *publisher_servant, DDS::DataWriter_ptr dw_local, OpenDDS::DCPS::DataWriterRemote_ptr dw_remote) throw (CORBA::SystemException)
DDS::ReturnCode_t register_instance_i (DDS::InstanceHandle_t &handle, DataSample *data, const DDS::Time_t &source_timestamp) throw (CORBA::SystemException)
DDS::ReturnCode_t unregister_instance_i (DDS::InstanceHandle_t handle, const DDS::Time_t &source_timestamp) throw (CORBA::SystemException)
void unregister_instances (const DDS::Time_t &source_timestamp)
DDS::ReturnCode_t write (DataSample *sample, DDS::InstanceHandle_t handle, const DDS::Time_t &source_timestamp, GUIDSeq *filter_out)
DDS::ReturnCode_t dispose (DDS::InstanceHandle_t handle, const DDS::Time_t &source_timestamp) throw (CORBA::SystemException)
DDS::ReturnCode_t num_samples (DDS::InstanceHandle_t handle, size_t &size)
DataSampleList get_unsent_data ()
DataSampleList get_resend_data ()
RepoId get_publication_id ()
RepoId get_dp_id ()
void unregister_all ()
void data_delivered (const DataSampleListElement *sample)
void control_delivered (ACE_Message_Block *sample)
SendControlStatus send_control_customized (const DataLinkSet_rch &links, ACE_Message_Block *msg, void *extra)
bool should_ack () const
 Does this writer have samples to be acknowledged?
AckToken create_ack_token (DDS::Duration_t max_wait) const
 Create an AckToken for ack operations.
DDS::ReturnCode_t send_ack_requests (AckToken &token)
 Send SAMPLE_ACK messages to associated readers.
DDS::ReturnCode_t wait_for_ack_responses (const AckToken &token)
 Wait for SAMPLE_ACK responses from associated readers.
virtual void deliver_ack (const DataSampleHeader &header, DataSample *data)
 Deliver a requested SAMPLE_ACK message to this writer.
virtual bool check_transport_qos (const TransportInst &inst)
bool coherent_changes_pending ()
 Are coherent changes pending?
void begin_coherent_changes ()
 Starts a coherent change set; should only be called once.
void end_coherent_changes (const GroupCoherentSamples &group_samples)
 Ends a coherent change set; should only be called once.
const char * get_topic_name ()
char const * get_type_name () const
void data_dropped (const DataSampleListElement *element, bool dropped_by_transport)
void control_dropped (ACE_Message_Block *sample, bool dropped_by_transport)
ACE_INLINE ACE_Recursive_Thread_Mutex & get_lock ()
virtual void unregistered (DDS::InstanceHandle_t instance_handle)
DDS::DataWriterListenerlistener_for (DDS::StatusKind kind)
virtual int handle_timeout (const ACE_Time_Value &tv, const void *arg)
 Handle the assert liveliness timeout.
virtual int handle_close (ACE_HANDLE, ACE_Reactor_Mask)
void send_suspended_data ()
void remove_all_associations ()
void notify_publication_disconnected (const ReaderIdSeq &subids)
void notify_publication_reconnected (const ReaderIdSeq &subids)
void notify_publication_lost (const ReaderIdSeq &subids)
void notify_connection_deleted ()
DDS::ReturnCode_t create_sample_data_message (DataSample *data, DDS::InstanceHandle_t instance_handle, ACE_Message_Block *&message, const DDS::Time_t &source_timestamp, bool content_filter)
bool persist_data ()
void reschedule_deadline ()
void wait_pending ()
 Wait for pending samples to drain.
DDS::InstanceHandle_t get_next_handle ()
virtual EntityImplparent () const

Public Attributes

int data_dropped_count_
 Statistics counter.
int data_delivered_count_
int control_dropped_count_
int control_delivered_count_

Protected Types

typedef std::map< RepoId,
ReaderInfo, GUID_tKeyLessThan
RepoIdToReaderInfoMap

Protected Member Functions

PublisherImplget_publisher_servant ()
virtual DDS::ReturnCode_t enable_specific ()=0 throw (CORBA::SystemException)
PublicationInstanceget_handle_instance (DDS::InstanceHandle_t handle)

Protected Attributes

size_t n_chunks_
 The number of chunks for the cached allocator.
size_t association_chunk_multiplier_
 The multiplier for allocators affected by associations.
CORBA::String_var type_name_
 The type name of associated topic.
DDS::DataWriterQos qos_
 The qos policy list of this datawriter.
DomainParticipantImplparticipant_servant_
RepoIdToReaderInfoMap reader_info_

Private Types

typedef std::map< RepoId,
DDS::InstanceHandle_t, GUID_tKeyLessThan
RepoIdToHandleMap

Private Member Functions

void notify_publication_lost (const DDS::InstanceHandleSeq &handles)
ACE_Message_Block * create_control_message (MessageId message_id, ACE_Message_Block *data, const DDS::Time_t &source_timestamp)
bool send_liveliness (const ACE_Time_Value &now)
 Send the liveliness message.
bool lookup_instance_handles (const ReaderIdSeq &ids, DDS::InstanceHandleSeq &hdls)
 Lookup the instance handles by the subscription repo ids.
const RepoIdget_repo_id () const
CORBA::Long get_priority_value (const AssociationData &) const

Private Attributes

CORBA::String_var topic_name_
 The name of associated topic.
RepoId topic_id_
 The associated topic repository id.
DDS::Topic_var topic_objref_
 The object reference of the associated topic.
TopicImpltopic_servant_
 The topic servant.
DDS::StatusMask listener_mask_
DDS::DataWriterListener_var listener_
 Used to notify the entity for relevant events.
DDS::DataWriterListenerfast_listener_
 The datawriter listener servant.
DDS::DomainId_t domain_id_
 The domain id.
PublisherImplpublisher_servant_
 The publisher servant which creates this datawriter.
DDS::DataWriter_var dw_local_objref_
 the object reference of the local datawriter
OpenDDS::DCPS::DataWriterRemote_var dw_remote_objref_
 The object reference of the remote datawriter.
PublicationId publication_id_
 The repository id of this datawriter/publication.
SequenceNumber sequence_number_
bool coherent_
ACE_UINT32 coherent_samples_
WriteDataContainerdata_container_
 The sample data container.
ACE_Recursive_Thread_Mutex lock_
RepoIdToHandleMap id_to_handle_map_
IdSet readers_
DDS::LivelinessLostStatus liveliness_lost_status_
 Status conditions.
DDS::OfferedDeadlineMissedStatus offered_deadline_missed_status_
DDS::OfferedIncompatibleQosStatus offered_incompatible_qos_status_
DDS::PublicationMatchedStatus publication_match_status_
bool liveliness_lost_
MessageBlockAllocatormb_allocator_
 The message block allocator.
DataBlockAllocatordb_allocator_
 The data block allocator.
DataSampleHeaderAllocatorheader_allocator_
 The header data allocator.
ACE_Reactor * reactor_
ACE_Time_Value liveliness_check_interval_
 The time interval for sending liveliness message.
ACE_Time_Value last_liveliness_activity_time_
 Timestamp of last write/dispose/assert_liveliness.
CORBA::Long last_deadline_missed_total_count_
std::auto_ptr< OfferedDeadlineWatchdogwatchdog_
bool cancel_timer_
bool is_bit_
bool initialized_
 Flag indicates that the init() is called.
ACE_SYNCH_MUTEX wfaLock_
 Lock used for wait_for_acks() processing.
ACE_Condition< ACE_SYNCH_MUTEX > wfaCondition_
 Used to block in wait_for_acks().
RepoIdToSequenceMap idToSequence_
IdSet pending_readers_
DataSampleList available_data_list_
 The cached available data while suspending.
Monitormonitor_
 Monitor object for this entity.
Monitorperiodic_monitor_
 Periodic Monitor object for this entity.

Friends

class WriteDataContainer
class PublisherImpl
class ::DDS_TEST

Classes

struct  AckCustomization
struct  AckToken
struct  ReaderInfo

Detailed Description

Implements the OpenDDS::DCPS::DataWriterRemote interfaces and DDS::DataWriter interfaces.

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 datawriter which is specific to the data-type associated with the topic.

Note:
: This class is responsible for allocating memory for the header message block (MessageBlock + DataBlock + DataSampleHeader) and the DataSampleListElement. The data-type datawriter is responsible for allocating memory for the sample data message block. (e.g. MessageBlock + DataBlock + Foo data). But it gives up ownership to this WriteDataContainer.


Member Typedef Documentation

typedef std::set<RepoId, GUID_tKeyLessThan> OpenDDS::DCPS::DataWriterImpl::IdSet

typedef std::vector<DDS::InstanceHandle_t> OpenDDS::DCPS::DataWriterImpl::InstanceHandleVec

typedef std::map<RepoId, DDS::InstanceHandle_t, GUID_tKeyLessThan> OpenDDS::DCPS::DataWriterImpl::RepoIdToHandleMap [private]

typedef std::map<RepoId, ReaderInfo, GUID_tKeyLessThan> OpenDDS::DCPS::DataWriterImpl::RepoIdToReaderInfoMap [protected]

typedef std::map<RepoId, SequenceNumber, GUID_tKeyLessThan> OpenDDS::DCPS::DataWriterImpl::RepoIdToSequenceMap


Constructor & Destructor Documentation

OpenDDS::DCPS::DataWriterImpl::DataWriterImpl (  ) 

Constructor.

OpenDDS::DCPS::DataWriterImpl::~DataWriterImpl (  )  [virtual]

Destructor.


Member Function Documentation

void OpenDDS::DCPS::DataWriterImpl::add_association ( const RepoId yourId,
const ReaderAssociation reader,
bool  active 
)

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::assert_liveliness (  )  throw (CORBA::SystemException) [virtual]

Implements DDS::DataWriter.

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::assert_liveliness_by_participant (  )  [virtual]

void OpenDDS::DCPS::DataWriterImpl::association_complete ( const RepoId remote_id  ) 

void OpenDDS::DCPS::DataWriterImpl::begin_coherent_changes (  ) 

Starts a coherent change set; should only be called once.

bool OpenDDS::DCPS::DataWriterImpl::check_transport_qos ( const TransportInst inst  )  [virtual]

Implements OpenDDS::DCPS::TransportClient.

void OpenDDS::DCPS::DataWriterImpl::cleanup (  ) 

cleanup the DataWriter.

bool OpenDDS::DCPS::DataWriterImpl::coherent_changes_pending (  ) 

Are coherent changes pending?

void OpenDDS::DCPS::DataWriterImpl::control_delivered ( ACE_Message_Block *  sample  )  [virtual]

This is called by transport to notify that the control message is delivered.

Reimplemented from OpenDDS::DCPS::TransportSendListener.

void OpenDDS::DCPS::DataWriterImpl::control_dropped ( ACE_Message_Block *  sample,
bool  dropped_by_transport 
) [virtual]

This is called by transport to notify that the control message is dropped.

Reimplemented from OpenDDS::DCPS::TransportSendListener.

DataWriterImpl::AckToken OpenDDS::DCPS::DataWriterImpl::create_ack_token ( DDS::Duration_t  max_wait  )  const

Create an AckToken for ack operations.

ACE_Message_Block * OpenDDS::DCPS::DataWriterImpl::create_control_message ( MessageId  message_id,
ACE_Message_Block *  data,
const DDS::Time_t source_timestamp 
) [private]

This method create a header message block and chain with the registered sample. The header contains the information needed. e.g. message id, length of whole message... The fast allocator is not used for the header.

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::create_sample_data_message ( DataSample data,
DDS::InstanceHandle_t  instance_handle,
ACE_Message_Block *&  message,
const DDS::Time_t source_timestamp,
bool  content_filter 
)

This method create a header message block and chain with the sample data. The header contains the information needed. e.g. message id, length of whole message... The fast allocator is used to allocate the message block, data block and header.

void OpenDDS::DCPS::DataWriterImpl::data_delivered ( const DataSampleListElement sample  )  [virtual]

This is called by transport to notify that the sample is delivered and it is delegated to WriteDataContainer to adjust the internal data sample threads.

Reimplemented from OpenDDS::DCPS::TransportSendListener.

void OpenDDS::DCPS::DataWriterImpl::data_dropped ( const DataSampleListElement element,
bool  dropped_by_transport 
) [virtual]

This mothod is called by transport to notify the instance sample is dropped and it delegates to WriteDataContainer to update the internal list.

Reimplemented from OpenDDS::DCPS::TransportSendListener.

void OpenDDS::DCPS::DataWriterImpl::deliver_ack ( const DataSampleHeader header,
DataSample data 
) [virtual]

Deliver a requested SAMPLE_ACK message to this writer.

Reimplemented from OpenDDS::DCPS::TransportSendListener.

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::dispose ( DDS::InstanceHandle_t  handle,
const DDS::Time_t source_timestamp 
) throw (CORBA::SystemException)

Delegate to the WriteDataContainer to dispose all data samples for a given instance and tell the transport to broadcast the disposed instance.

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::enable (  )  throw (CORBA::SystemException) [virtual]

Implements DDS::Entity.

virtual DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::enable_specific (  )  throw (CORBA::SystemException) [protected, pure virtual]

void OpenDDS::DCPS::DataWriterImpl::end_coherent_changes ( const GroupCoherentSamples group_samples  ) 

Ends a coherent change set; should only be called once.

RepoId OpenDDS::DCPS::DataWriterImpl::get_dp_id (  ) 

Accessor of the repository id of the domain participant.

PublicationInstance* OpenDDS::DCPS::DataWriterImpl::get_handle_instance ( DDS::InstanceHandle_t  handle  )  [protected]

Attempt to locate an existing instance for the given handle.

DDS::InstanceHandle_t OpenDDS::DCPS::DataWriterImpl::get_instance_handle (  )  throw (CORBA::SystemException) [virtual]

Implements OpenDDS::DCPS::EntityImpl.

void OpenDDS::DCPS::DataWriterImpl::get_instance_handles ( InstanceHandleVec instance_handles  ) 

DDS::DataWriterListener_ptr OpenDDS::DCPS::DataWriterImpl::get_listener (  )  throw (CORBA::SystemException) [virtual]

Implements DDS::DataWriter.

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::get_liveliness_lost_status ( DDS::LivelinessLostStatus status  )  throw (CORBA::SystemException) [virtual]

ACE_INLINE ACE_Recursive_Thread_Mutex& OpenDDS::DCPS::DataWriterImpl::get_lock (  )  [inline]

Accessor of the WriterDataContainer's lock.

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::get_matched_subscription_data ( DDS::SubscriptionBuiltinTopicData subscription_data,
DDS::InstanceHandle_t  subscription_handle 
) throw (CORBA::SystemException) [virtual]

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::get_matched_subscriptions ( DDS::InstanceHandleSeq subscription_handles  )  throw (CORBA::SystemException) [virtual]

DDS::InstanceHandle_t OpenDDS::DCPS::DataWriterImpl::get_next_handle (  ) 

Get an instance handle for a new instance.

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::get_offered_deadline_missed_status ( DDS::OfferedDeadlineMissedStatus status  )  throw (CORBA::SystemException) [virtual]

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::get_offered_incompatible_qos_status ( DDS::OfferedIncompatibleQosStatus status  )  throw (CORBA::SystemException) [virtual]

CORBA::Long OpenDDS::DCPS::DataWriterImpl::get_priority_value ( const AssociationData  )  const [inline, private, virtual]

Implements OpenDDS::DCPS::TransportClient.

RepoId OpenDDS::DCPS::DataWriterImpl::get_publication_id (  ) 

Accessor of the repository id of this datawriter/publication.

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::get_publication_matched_status ( DDS::PublicationMatchedStatus status  )  throw (CORBA::SystemException) [virtual]

DDS::Publisher_ptr OpenDDS::DCPS::DataWriterImpl::get_publisher (  )  throw (CORBA::SystemException) [virtual]

Implements DDS::DataWriter.

PublisherImpl * OpenDDS::DCPS::DataWriterImpl::get_publisher_servant (  )  [protected]

Accessor of the cached publisher servant.

virtual DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::get_qos ( DDS::DataWriterQos qos  )  throw (CORBA::SystemException) [virtual]

void OpenDDS::DCPS::DataWriterImpl::get_readers ( IdSet readers  ) 

const RepoId& OpenDDS::DCPS::DataWriterImpl::get_repo_id (  )  const [inline, private, virtual]

Implements OpenDDS::DCPS::TransportClient.

DataSampleList OpenDDS::DCPS::DataWriterImpl::get_resend_data (  ) 

DDS::Topic_ptr OpenDDS::DCPS::DataWriterImpl::get_topic (  )  throw (CORBA::SystemException) [virtual]

Implements DDS::DataWriter.

const char * OpenDDS::DCPS::DataWriterImpl::get_topic_name (  ) 

Accessor of the associated topic name.

char const * OpenDDS::DCPS::DataWriterImpl::get_type_name (  )  const

Get associated topic type name.

DataSampleList OpenDDS::DCPS::DataWriterImpl::get_unsent_data (  ) 

Retrieve the unsent data from the WriteDataContainer.

int OpenDDS::DCPS::DataWriterImpl::handle_close ( ACE_HANDLE  ,
ACE_Reactor_Mask   
) [virtual]

int OpenDDS::DCPS::DataWriterImpl::handle_timeout ( const ACE_Time_Value &  tv,
const void *  arg 
) [virtual]

Handle the assert liveliness timeout.

void OpenDDS::DCPS::DataWriterImpl::init ( DDS::Topic_ptr  topic,
TopicImpl topic_servant,
const DDS::DataWriterQos qos,
DDS::DataWriterListener_ptr  a_listener,
const DDS::StatusMask mask,
OpenDDS::DCPS::DomainParticipantImpl participant_servant,
OpenDDS::DCPS::PublisherImpl publisher_servant,
DDS::DataWriter_ptr  dw_local,
OpenDDS::DCPS::DataWriterRemote_ptr  dw_remote 
) throw (CORBA::SystemException) [virtual]

Initialize the data members.

DDS::DataWriterListener* OpenDDS::DCPS::DataWriterImpl::listener_for ( DDS::StatusKind  kind  ) 

This is used to retrieve the listener for a certain status change.

If this datawriter 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/publisher.

bool OpenDDS::DCPS::DataWriterImpl::lookup_instance_handles ( const ReaderIdSeq ids,
DDS::InstanceHandleSeq hdls 
) [private]

Lookup the instance handles by the subscription repo ids.

void OpenDDS::DCPS::DataWriterImpl::notify_connection_deleted (  )  [virtual]

Implements OpenDDS::DCPS::TransportSendListener.

void OpenDDS::DCPS::DataWriterImpl::notify_publication_disconnected ( const ReaderIdSeq subids  )  [virtual]

Implements OpenDDS::DCPS::TransportSendListener.

void OpenDDS::DCPS::DataWriterImpl::notify_publication_lost ( const DDS::InstanceHandleSeq handles  )  [private]

void OpenDDS::DCPS::DataWriterImpl::notify_publication_lost ( const ReaderIdSeq subids  )  [virtual]

Implements OpenDDS::DCPS::TransportSendListener.

void OpenDDS::DCPS::DataWriterImpl::notify_publication_reconnected ( const ReaderIdSeq subids  )  [virtual]

Implements OpenDDS::DCPS::TransportSendListener.

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::num_samples ( DDS::InstanceHandle_t  handle,
size_t &  size 
)

Return the number of samples for a given instance.

EntityImpl * OpenDDS::DCPS::DataWriterImpl::parent (  )  const [virtual]

Reimplemented from OpenDDS::DCPS::EntityImpl.

bool OpenDDS::DCPS::DataWriterImpl::persist_data (  ) 

Make sent data available beyond the lifetime of this DataWriter.

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::register_instance_i ( DDS::InstanceHandle_t handle,
DataSample data,
const DDS::Time_t source_timestamp 
) throw (CORBA::SystemException)

Delegate to the WriteDataContainer to register and tell the transport to broadcast the registered instance.

void OpenDDS::DCPS::DataWriterImpl::remove_all_associations (  ) 

void OpenDDS::DCPS::DataWriterImpl::remove_associations ( const ReaderIdSeq readers,
bool  callback 
) [virtual]

Implements OpenDDS::DCPS::TransportSendListener.

void OpenDDS::DCPS::DataWriterImpl::reschedule_deadline (  ) 

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::send_ack_requests ( AckToken token  ) 

Send SAMPLE_ACK messages to associated readers.

SendControlStatus OpenDDS::DCPS::DataWriterImpl::send_control_customized ( const DataLinkSet_rch links,
ACE_Message_Block *  msg,
void *  extra 
) [virtual]

Hook for the listener to override a normal control message with customized messages to different DataLinks.

Reimplemented from OpenDDS::DCPS::TransportSendListener.

bool OpenDDS::DCPS::DataWriterImpl::send_liveliness ( const ACE_Time_Value &  now  )  [private]

Send the liveliness message.

void OpenDDS::DCPS::DataWriterImpl::send_suspended_data (  ) 

Called by the PublisherImpl to indicate that the Publisher is now resumed and any data collected while it was suspended should now be sent.

virtual DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::set_listener ( DDS::DataWriterListener_ptr  a_listener,
DDS::StatusMask  mask 
) throw (CORBA::SystemException) [virtual]

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::set_qos ( const DDS::DataWriterQos qos  )  throw (CORBA::SystemException) [virtual]

bool OpenDDS::DCPS::DataWriterImpl::should_ack (  )  const

Does this writer have samples to be acknowledged?

void OpenDDS::DCPS::DataWriterImpl::unregister_all (  ) 

Delegate to WriteDataContainer to unregister all instances.

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::unregister_instance_i ( DDS::InstanceHandle_t  handle,
const DDS::Time_t source_timestamp 
) throw (CORBA::SystemException)

Delegate to the WriteDataContainer to unregister and tell the transport to broadcast the unregistered instance.

void OpenDDS::DCPS::DataWriterImpl::unregister_instances ( const DDS::Time_t source_timestamp  ) 

Unregister all registered instances and tell the transport to broadcast the unregistered instances.

virtual void OpenDDS::DCPS::DataWriterImpl::unregistered ( DDS::InstanceHandle_t  instance_handle  )  [virtual]

This method is called when an instance is unregistered from the WriteDataContainer.

The subclass must provide the implementation to unregister the instance from its own map.

void OpenDDS::DCPS::DataWriterImpl::update_incompatible_qos ( const IncompatibleQosStatus status  ) 

void OpenDDS::DCPS::DataWriterImpl::update_subscription_params ( const RepoId readerId,
const DDS::StringSeq params 
)

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::wait_for_ack_responses ( const AckToken token  ) 

Wait for SAMPLE_ACK responses from associated readers.

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::wait_for_acknowledgments ( const DDS::Duration_t max_wait  )  throw (CORBA::SystemException) [virtual]

void OpenDDS::DCPS::DataWriterImpl::wait_pending (  ) 

Wait for pending samples to drain.

DDS::ReturnCode_t OpenDDS::DCPS::DataWriterImpl::write ( DataSample sample,
DDS::InstanceHandle_t  handle,
const DDS::Time_t source_timestamp,
GUIDSeq filter_out 
)

Delegate to the WriteDataContainer to queue the instance sample and finally tell the transport to send the sample.

Parameters:
filter_out can either be null (if the writer can't or won't evaluate the filters), or a list of associated reader RepoIds that should NOT get the data sample due to content filtering.


Friends And Related Function Documentation

friend class ::DDS_TEST [friend]

Reimplemented from OpenDDS::DCPS::TransportClient.

friend class PublisherImpl [friend]

friend class WriteDataContainer [friend]


Member Data Documentation

size_t OpenDDS::DCPS::DataWriterImpl::association_chunk_multiplier_ [protected]

The multiplier for allocators affected by associations.

DataSampleList OpenDDS::DCPS::DataWriterImpl::available_data_list_ [private]

The cached available data while suspending.

bool OpenDDS::DCPS::DataWriterImpl::cancel_timer_ [private]

The flag indicates whether the liveliness timer is scheduled and needs be cancelled.

bool OpenDDS::DCPS::DataWriterImpl::coherent_ [private]

Flag indicating DataWriter current belongs to a coherent change set.

ACE_UINT32 OpenDDS::DCPS::DataWriterImpl::coherent_samples_ [private]

The number of samples belonging to the current coherent change set.

int OpenDDS::DCPS::DataWriterImpl::control_delivered_count_

int OpenDDS::DCPS::DataWriterImpl::control_dropped_count_

WriteDataContainer* OpenDDS::DCPS::DataWriterImpl::data_container_ [private]

The sample data container.

int OpenDDS::DCPS::DataWriterImpl::data_delivered_count_

int OpenDDS::DCPS::DataWriterImpl::data_dropped_count_

Statistics counter.

DataBlockAllocator* OpenDDS::DCPS::DataWriterImpl::db_allocator_ [private]

The data block allocator.

DDS::DomainId_t OpenDDS::DCPS::DataWriterImpl::domain_id_ [private]

The domain id.

DDS::DataWriter_var OpenDDS::DCPS::DataWriterImpl::dw_local_objref_ [private]

the object reference of the local datawriter

OpenDDS::DCPS::DataWriterRemote_var OpenDDS::DCPS::DataWriterImpl::dw_remote_objref_ [private]

The object reference of the remote datawriter.

DDS::DataWriterListener* OpenDDS::DCPS::DataWriterImpl::fast_listener_ [private]

The datawriter listener servant.

DataSampleHeaderAllocator* OpenDDS::DCPS::DataWriterImpl::header_allocator_ [private]

The header data allocator.

RepoIdToHandleMap OpenDDS::DCPS::DataWriterImpl::id_to_handle_map_ [private]

RepoIdToSequenceMap OpenDDS::DCPS::DataWriterImpl::idToSequence_ [private]

bool OpenDDS::DCPS::DataWriterImpl::initialized_ [private]

Flag indicates that the init() is called.

bool OpenDDS::DCPS::DataWriterImpl::is_bit_ [private]

Flag indicates that this datawriter is a builtin topic datawriter.

CORBA::Long OpenDDS::DCPS::DataWriterImpl::last_deadline_missed_total_count_ [private]

Total number of offered deadlines missed during last offered deadline status check.

ACE_Time_Value OpenDDS::DCPS::DataWriterImpl::last_liveliness_activity_time_ [private]

Timestamp of last write/dispose/assert_liveliness.

DDS::DataWriterListener_var OpenDDS::DCPS::DataWriterImpl::listener_ [private]

Used to notify the entity for relevant events.

DDS::StatusMask OpenDDS::DCPS::DataWriterImpl::listener_mask_ [private]

The StatusKind bit mask indicates which status condition change can be notified by the listener of this entity.

ACE_Time_Value OpenDDS::DCPS::DataWriterImpl::liveliness_check_interval_ [private]

The time interval for sending liveliness message.

bool OpenDDS::DCPS::DataWriterImpl::liveliness_lost_ [private]

True if the writer failed to actively signal its liveliness within its offered liveliness period.

DDS::LivelinessLostStatus OpenDDS::DCPS::DataWriterImpl::liveliness_lost_status_ [private]

Status conditions.

ACE_Recursive_Thread_Mutex OpenDDS::DCPS::DataWriterImpl::lock_ [private]

The lock to protect the activate subscriptions and status changes.

Reimplemented from OpenDDS::DCPS::EntityImpl.

MessageBlockAllocator* OpenDDS::DCPS::DataWriterImpl::mb_allocator_ [private]

The message block allocator.

Todo:
The publication_lost_status_ and publication_reconnecting_status_ are left here for future use when we add get_publication_lost_status() and get_publication_reconnecting_status() methods.

Monitor* OpenDDS::DCPS::DataWriterImpl::monitor_ [private]

Monitor object for this entity.

size_t OpenDDS::DCPS::DataWriterImpl::n_chunks_ [protected]

The number of chunks for the cached allocator.

DDS::OfferedDeadlineMissedStatus OpenDDS::DCPS::DataWriterImpl::offered_deadline_missed_status_ [private]

DDS::OfferedIncompatibleQosStatus OpenDDS::DCPS::DataWriterImpl::offered_incompatible_qos_status_ [private]

DomainParticipantImpl* OpenDDS::DCPS::DataWriterImpl::participant_servant_ [protected]

The participant servant which creats the publisher that creates this datawriter.

IdSet OpenDDS::DCPS::DataWriterImpl::pending_readers_ [private]

Monitor* OpenDDS::DCPS::DataWriterImpl::periodic_monitor_ [private]

Periodic Monitor object for this entity.

PublicationId OpenDDS::DCPS::DataWriterImpl::publication_id_ [private]

The repository id of this datawriter/publication.

DDS::PublicationMatchedStatus OpenDDS::DCPS::DataWriterImpl::publication_match_status_ [private]

PublisherImpl* OpenDDS::DCPS::DataWriterImpl::publisher_servant_ [private]

The publisher servant which creates this datawriter.

DDS::DataWriterQos OpenDDS::DCPS::DataWriterImpl::qos_ [protected]

The qos policy list of this datawriter.

ACE_Reactor* OpenDDS::DCPS::DataWriterImpl::reactor_ [private]

The orb's reactor to be used to register the liveliness timer.

RepoIdToReaderInfoMap OpenDDS::DCPS::DataWriterImpl::reader_info_ [protected]

IdSet OpenDDS::DCPS::DataWriterImpl::readers_ [private]

SequenceNumber OpenDDS::DCPS::DataWriterImpl::sequence_number_ [private]

The sequence number unique in DataWriter scope. Not used in first implementation.

RepoId OpenDDS::DCPS::DataWriterImpl::topic_id_ [private]

The associated topic repository id.

CORBA::String_var OpenDDS::DCPS::DataWriterImpl::topic_name_ [private]

The name of associated topic.

DDS::Topic_var OpenDDS::DCPS::DataWriterImpl::topic_objref_ [private]

The object reference of the associated topic.

TopicImpl* OpenDDS::DCPS::DataWriterImpl::topic_servant_ [private]

The topic servant.

CORBA::String_var OpenDDS::DCPS::DataWriterImpl::type_name_ [protected]

The type name of associated topic.

std::auto_ptr<OfferedDeadlineWatchdog> OpenDDS::DCPS::DataWriterImpl::watchdog_ [private]

Watchdog responsible for reporting missed offered deadlines.

ACE_Condition<ACE_SYNCH_MUTEX> OpenDDS::DCPS::DataWriterImpl::wfaCondition_ [private]

Used to block in wait_for_acks().

ACE_SYNCH_MUTEX OpenDDS::DCPS::DataWriterImpl::wfaLock_ [private]

Lock used for wait_for_acks() processing.


The documentation for this class was generated from the following files:
Generated on Wed Nov 16 15:28:42 2011 for OpenDDS by  doxygen 1.4.7