SampleInfo Class Reference
[Data Samples]

Information that accompanies each sample that is read or taken. More...

Inheritance diagram for SampleInfo:

Copyable

List of all members.

Public Member Functions

Object copy_from (Object other)

Public Attributes

int sample_state
 The sample state of the sample.
int view_state
 The view state of the instance.
int instance_state
 The instance state of the instance.
final Time_t source_timestamp
 The timestamp when the sample was written by a DataWriter.
final InstanceHandle_t instance_handle
 Identifies locally the corresponding instance.
final InstanceHandle_t publication_handle
 Identifies locally the DataWriter that modified the instance.
int disposed_generation_count
 The disposed generation count of the instance at the time of sample reception.
int no_writers_generation_count
 The no writers generation count of the instance at the time of sample reception.
int sample_rank
 The sample rank of the sample.
int generation_rank
 The generation rank of the sample.
int absolute_generation_rank
 The absolute generation rank of the sample.
boolean valid_data
 Indicates whether the DataSample contains data or else it is only used to communicate a change in the instance_state of the instance.
final Time_t reception_timestamp
 <<eXtension>> The timestamp when the sample was committed by a DataReader.
final SequenceNumber_t publication_sequence_number
 <<eXtension>> The publication sequence number.
final SequenceNumber_t reception_sequence_number
 <<eXtension>> The reception sequence number when sample was committed by a DataReader
final GUID_t original_publication_virtual_guid
 <<eXtension>> The original publication virtual GUID.
final SequenceNumber_t original_publication_virtual_sequence_number
 <<eXtension>> The original publication virtual sequence number.

Static Package Functions

static SampleInfo get_from_native (long native_sample_info)


Detailed Description

Information that accompanies each sample that is read or taken.

Interpretation of the SampleInfo

The com.rti.dds.subscription.SampleInfo contains information pertaining to the associated Data instance sample including:

Interpretation of the SampleInfo disposed_generation_count and no_writers_generation_count

For each instance, RTI Connext internally maintains two counts, the com.rti.dds.subscription.SampleInfo.disposed_generation_count and com.rti.dds.subscription.SampleInfo.no_writers_generation_count, relative to each DataReader:

The com.rti.dds.subscription.SampleInfo.disposed_generation_count and com.rti.dds.subscription.SampleInfo.no_writers_generation_count available in the com.rti.dds.subscription.SampleInfo capture a snapshot of the corresponding counters at the time the sample was received.

Interpretation of the SampleInfo sample_rank, generation_rank and absolute_generation_rank

The com.rti.dds.subscription.SampleInfo.sample_rank and com.rti.dds.subscription.SampleInfo.generation_rank available in the com.rti.dds.subscription.SampleInfo are computed based solely on the actual samples in the ordered collection returned by read or take.

The com.rti.dds.subscription.SampleInfo.generation_rank is computed using the formula:
generation_rank = (MRSIC.disposed_generation_count
                          + MRSIC.no_writers_generation_count)
                    - (S.disposed_generation_count
                          + S.no_writers_generation_count)                 

The com.rti.dds.subscription.SampleInfo.absolute_generation_rank available in the com.rti.dds.subscription.SampleInfo indicates the difference in "generations" between the sample (S) and the Most Recent Sample of the same instance that the middleware has received (MRS). That is, it counts the number of times the instance transitioned from not-alive to alive in the time from the reception of the S to the time when the read or take was called.

absolute_generation_rank = (MRS.disposed_generation_count
                                  + MRS.no_writers_generation_count)
                             - (S.disposed_generation_count
                                  + S.no_writers_generation_count)                 

Interpretation of the SampleInfo counters and ranks

These counters and ranks allow the application to distinguish samples belonging to different "generations" of the instance. Note that it is possible for an instance to transition from not-alive to alive (and back) several times before the application accesses the data by means of read or take. In this case, the returned collection may contain samples that cross generations (i.e. some samples were received before the instance became not-alive, other after the instance re-appeared again). Using the information in the com.rti.dds.subscription.SampleInfo, the application can anticipate what other information regarding the same instance appears in the returned collection, as well as in the infrastructure and thus make appropriate decisions.

For example, an application desiring to only consider the most current sample for each instance would only look at samples with sample_rank == 0. Similarly, an application desiring to only consider samples that correspond to the latest generation in the collection will only look at samples with generation_rank == 0. An application desiring only samples pertaining to the latest generation available will ignore samples for which absolute_generation_rank != 0. Other application-defined criteria may also be used.

See also:
com.rti.dds.subscription.SampleStateKind, com.rti.dds.subscription.InstanceStateKind, com.rti.dds.subscription.ViewStateKind, com.rti.dds.subscription.SampleInfo.valid_data
DDSInstanceViewStates.png

Statechart of the instance_state and view_state of a single instance


Member Function Documentation

Object copy_from ( Object  other  ) 

Implementation of the Copyable interface.

See also:
com.rti.dds.infrastructure.Copyable.copy_from(java.lang.Object)

Implements Copyable.

static SampleInfo get_from_native ( long  native_sample_info  )  [static, package]

Given a pointer to a native SampleInfo object from the queue, get a reference to the corresponding Java SampleInfo object.


Member Data Documentation

The sample state of the sample.

Indicates whether or not the corresponding data sample has already been read.

See also:
com.rti.dds.subscription.SampleStateKind

The view state of the instance.

Indicates whether the com.rti.dds.subscription.DataReader has already seen samples for the most-current generation of the related instance.

See also:
com.rti.dds.subscription.ViewStateKind

The instance state of the instance.

Indicates whether the instance is currently in existence or, if it has been disposed, the reason why it was disposed.

See also:
com.rti.dds.subscription.InstanceStateKind

The timestamp when the sample was written by a DataWriter.

Identifies locally the corresponding instance.

Identifies locally the DataWriter that modified the instance.

The publication_handle is the same com.rti.dds.infrastructure.InstanceHandle_t that is returned by the operation com.rti.dds.subscription.DataReader.get_matched_publications and can also be used as a parameter to the operation com.rti.dds.subscription.DataReader.get_matched_publication_data.

The disposed generation count of the instance at the time of sample reception.

Indicates the number of times the instance had become alive after it was disposed explicitly by a com.rti.dds.publication.DataWriter, at the time the sample was received.

See also:
Interpretation of the SampleInfo disposed_generation_count and no_writers_generation_count Interpretation of the SampleInfo counters and ranks

The no writers generation count of the instance at the time of sample reception.

Indicates the number of times the instance had become alive after it was disposed because there were no writers, at the time the sample was received.

See also:
Interpretation of the SampleInfo disposed_generation_count and no_writers_generation_count Interpretation of the SampleInfo counters and ranks

The sample rank of the sample.

Indicates the number of samples related to the same instance that follow in the collection returned by read or take.

See also:
Interpretation of the SampleInfo sample_rank, generation_rank and absolute_generation_rank Interpretation of the SampleInfo counters and ranks

The generation rank of the sample.

Indicates the generation difference (number of times the instance was disposed and become alive again) between the time the sample was received, and the time the most recent sample in the collection related to the same instance was received.

See also:
Interpretation of the SampleInfo sample_rank, generation_rank and absolute_generation_rank Interpretation of the SampleInfo counters and ranks

The absolute generation rank of the sample.

Indicates the generation difference (number of times the instance was disposed and become alive again) between the time the sample was received, and the time the most recent sample (which may not be in the returned collection) related to the same instance was received.

See also:
Interpretation of the SampleInfo sample_rank, generation_rank and absolute_generation_rank Interpretation of the SampleInfo counters and ranks

boolean valid_data

Indicates whether the DataSample contains data or else it is only used to communicate a change in the instance_state of the instance.

Normally each DataSample contains both a com.rti.dds.subscription.SampleInfo and some Data. However there are situations where a DataSample contains only the com.rti.dds.subscription.SampleInfo and does not have any associated data. This occurs when the RTI Connext notifies the application of a change of state for an instance that was caused by some internal mechanism (such as a timeout) for which there is no associated data. An example of this situation is when the RTI Connext detects that an instance has no writers and changes the corresponding instance_state to InstanceStateKind.NOT_ALIVE_NO_WRITERS_INSTANCE_STATE.

The application can distinguish whether a particular DataSample has data by examining the value of the valid_data flag. If this flag is set to true, then the DataSample contains valid Data. If the flag is set to false, the DataSample contains no Data.

To ensure correctness and portability, the valid_data flag must be examined by the application prior to accessing the Data associated with the DataSample and if the flag is set to false, the application should not access the Data associated with the DataSample, that is, the application should access only the com.rti.dds.subscription.SampleInfo.

<<eXtension>> The timestamp when the sample was committed by a DataReader.

<<eXtension>> The publication sequence number.

<<eXtension>> The reception sequence number when sample was committed by a DataReader

<<eXtension>> The original publication virtual GUID.

If the com.rti.dds.infrastructure.PresentationQosPolicy.access_scope of the com.rti.dds.publication.Publisher is PresentationQosPolicyAccessScopeKind.GROUP_PRESENTATION_QOS, this field contains the com.rti.dds.publication.Publisher virtual GUID that uniquely identifies the DataWriter group.

<<eXtension>> The original publication virtual sequence number.

If the com.rti.dds.infrastructure.PresentationQosPolicy.access_scope of the com.rti.dds.publication.Publisher is PresentationQosPolicyAccessScopeKind.GROUP_PRESENTATION_QOS, this field contains the com.rti.dds.publication.Publisher virtual sequence number that uniquely identifies a sample within the DataWriter group.


RTI Connext Java API Version 4.5f Copyright © 17 Mar 2012 Real-Time Innovations, Inc