Promote domains and Cyclone library to entities
This commit adds two entity types: a "domain", which is the parent of participants and which is instantiated for each domain that has at least one participant in it; and "cyclonedds", which is a representation of the (initialized) Cyclone DDS library in the process and that is the parent of all domain entities. The handle of the latter is a compile-constant, DDS_CYCLONEDDS_HANDLE. This changes the return value from dds_get_parent when executed on a participant: it now returns the handle of the entity representing the domain the participant is attached to. Two participants in the same domain self-evidently return the same domain entity. This allows deleting all participants in a domain by calling dds_delete on the domain entity, or tearing down everything and deinitializing the library by calling dds_delete on the top-level entity. Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
		
							parent
							
								
									c6befb48a7
								
							
						
					
					
						commit
						0b12ff5cfc
					
				
					 23 changed files with 690 additions and 305 deletions
				
			
		| 
						 | 
				
			
			@ -66,6 +66,9 @@ struct ddsi_serdata;
 | 
			
		|||
#define DDS_BUILTIN_TOPIC_DCPSSUBSCRIPTION ((dds_entity_t) (DDS_MIN_PSEUDO_HANDLE + 4))
 | 
			
		||||
/** @}*/
 | 
			
		||||
 | 
			
		||||
/** Special handle representing the entity corresponding to the CycloneDDS library itself */
 | 
			
		||||
#define DDS_CYCLONEDDS_HANDLE              ((dds_entity_t) (DDS_MIN_PSEUDO_HANDLE + 256))
 | 
			
		||||
 | 
			
		||||
/** @name Communication Status definitions
 | 
			
		||||
  @{**/
 | 
			
		||||
typedef enum dds_status_id {
 | 
			
		||||
| 
						 | 
				
			
			@ -860,7 +863,8 @@ dds_get_children(dds_entity_t entity, dds_entity_t *children, size_t size);
 | 
			
		|||
 * DataReaders), etc are also attached to that domain.
 | 
			
		||||
 *
 | 
			
		||||
 * This function will return the original domain ID when called on
 | 
			
		||||
 * any of the entities within that hierarchy.
 | 
			
		||||
 * any of the entities within that hierarchy.  For entities not associated
 | 
			
		||||
 * with a domain, the id is set to DDS_DOMAIN_DEFAULT.
 | 
			
		||||
 *
 | 
			
		||||
 * @param[in]  entity   Entity from which to get its children.
 | 
			
		||||
 * @param[out] id       Pointer to put the domain ID in.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -108,7 +108,9 @@ typedef enum dds_entity_kind
 | 
			
		|||
  DDS_KIND_COND_READ,
 | 
			
		||||
  DDS_KIND_COND_QUERY,
 | 
			
		||||
  DDS_KIND_COND_GUARD,
 | 
			
		||||
  DDS_KIND_WAITSET
 | 
			
		||||
  DDS_KIND_WAITSET,
 | 
			
		||||
  DDS_KIND_DOMAIN,
 | 
			
		||||
  DDS_KIND_CYCLONEDDS
 | 
			
		||||
} dds_entity_kind_t;
 | 
			
		||||
 | 
			
		||||
/* Handles are opaque pointers to implementation types */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue