posted on Saturday, April 03, 2010 - 01:53 pm
What is the role of DCPSInfoRepo server in OpenDDS for publisher and subscriber discovery?As I understand,since both are topic based ,so either of them should just care about the topic type of the broadcast data..and not who send or recieve it?RTI and Opensplice dont need that...
When a subscriber joins late,would it send a request to all publishers to resend data?
In case of PERSISTENT durability,is the data stored as a file in the local filesystem(so have to give some filepath in the application)?
In case of reliable reliability,pub wants ack from sub.Now if there are 5 subs ,then will the pub expect 5 acks?Does the pub know how many pubs are there in the network?
W.r.t. OpenSplice DDS, late joiners are provided with transient/persistent data by our distributed durability-service(s). In case such a service was already running on the machine where you start the late-joiner, the data is 'instantly available' as its already locally maintained (in shared-memory) by the co-located durability-service so there's actually also no copying of the data required. In case of a 'fresh starting node' the data will be 'aligned' from a remote node's durability-service which could be the publishing node, but not necessarily.
W.r.t. reliability, in OpenSplice, its receiving nodes that acknowledge reliable data (to the sending node, not the publisher), not applications. When there are multiple subscribers on a single node, there's only a single-nack (and actually the data will be de-serialized also only 1 time by our networking-service after which its made available by that service to all 'nodal' subscribers, again without having to create multiple copies of the data as we utilize shared-memory in which we maintain the information for all subscribers. Note that of course the view/instance-state information is specific for each subscriber/reader as this state is impacted by the actions of each reader, but not the payload/samples themselves).
> What is the role of DCPSInfoRepo server in OpenDDS for > publisher and subscriber discovery?
In OpenDDS, the DCPSInfoRepo provides the mechanism for publications and subscriptions to become associated. This includes the Request/Offered compatibility matching for newly joining publications and subscriptions. Once this processing is complete, the DCPSInfoRepo no longer participates in the associations and data communication is then exclusively among the participating processes.
Information about all active participants is cached in the DCPSInfoRepo to speed matching, and each OpenDDS participant connects to the DCPSInfoRepo to exchange compatibility information as the processes are initializing. As publications and subscriptions are created by a process, their information is provided to the DCPSInfoRepo for compatibility processing. In addition to the discovery services, the DCPSInfoRepo also publishes the Builtin Topic data, including any updates.
> > As I understand,since both are topic based ,so either of > them should just care about the topic type of the broadcast > data..and not who send or recieve it?RTI and Opensplice > dont need that... > > When a subscriber joins late,would it send a request to > all publishers to resend data?
The Quality of Service policy settings will determine which, if any, samples will be sent to a newly joining subscription. In OpenDDS, iff a publication determines, via the PERSISTENCE, HISTORY, RESOURCE_LIMITS, LIFESPAN, and WRITER_DATA_LIFECYCLE policy values that there is data to send to a newly joining subscription, it will do so.
> > In case of PERSISTENT durability,is the data stored as a > file in the local filesystem(so have to give some filepath > in the application)?
In OpenDDS, the PERSISTENT data is stored in a file system within a directory specified by a configuration setting. The default setting is the directory './OpenDDS-durable-data-dir' relative to the current working directory of the process.
> > In case of reliable reliability,pub wants ack from sub.Now > if there are 5 subs ,then will the pub expect 5 acks?Does > the pub know how many pubs are there in the network?
In OpenDDS, transport reliability is provided between endpoints. This means that acknowledgments are only sent between processes. If there are many subscriptions in a single process, only a single acknowledgment will be generated from that process.
The DDS specification provides the PublicationMatchedStatus communication status that includes a current count of associated subscriptions. Each publication can be queried independently for this value.