The sole purpose of this class is to allow the creation and destruction of DomainParticipant objects.

DomainParticipantFactory does not accept any Listener, since it is not an Entity.

Safe DDS Usage

In Safe DDS, DomainParticipantFactory shall be instantiated by the application and it is not a singleton.

Safe DDS Usage

In Safe DDS, the default DomainParticipantFactory constructor will use default transport and default platform implementations for creating DomainParticipant instances.

For a custom transport, the specific constructor can be used:

// Setting a default transport for a DomainParticipantFactory.
CustomTransport custom_transport{};
dds::DomainParticipantFactory factory{custom_transport};


DomainParticipantFactoryQos controls the behavior of the DomainParticipantFactory. Internally it does not contain any members.

Safe DDS Usage

In Safe DDS, it is important to note that the DomainParticipantFactoryQos does not possess a EntityFactoryQosPolicy. This is a direct consequence of the fact that a Safe DDS DomainParticipantFactory consistently creates DomainParticipant instances in a not enabled state.

The underlying reason for this design choice is that the Safe DDS DomainParticipant becomes incapable of creating subentities once it transitions into an enabled state. This ensures that the usage of Safe DDS remains secure and adheres to the established guidelines.