<?xml version="1.0" encoding="UTF-8"?>

<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://www.omg.org/spec/DDS-XML"
     xsi:schemaLocation="http://www.omg.org/spec/DDS-XML https://www.omg.org/spec/DDS-XML/20260301/dds-xml_system_definitions.xsd">
    
    <types>
        <module name="ShapesDemoTypes">
            <const name="MAX_COLOR_LEN" type="int32" value="128" />
            <struct name="ShapeType" extensibility="append">
                <member name="color" key="true" type="string"
                        stringMaxLength="MAX_COLOR_LEN" />
                <member name="x" type="int32" />
                <member name="y" type="int32" />
                <member name="shapesize" type="int32" />
            </struct>
        </module>
    </types>

    <qos_library name="MyAppQosLib">
        <qos_snippet name="KeepLast1">
            <datawriter_qos>
                <reliability>
                    <kind>RELIABLE_RELIABILITY_QOS</kind>
                </reliability>
                <history>
                    <kind>KEEP_LAST_HISTORY_QOS</kind>
                    <depth>1</depth>
                </history>
            </datawriter_qos>
            <datareader_qos>
                <reliability>
                    <kind>RELIABLE_RELIABILITY_QOS</kind>
                </reliability>
                <history>
                    <kind>KEEP_LAST_HISTORY_QOS</kind>
                    <depth>6</depth>
                </history>                
            </datareader_qos>
        </qos_snippet>
        <qos_profile name="MyQosShapeProfile">
            <qos_snippets>
                <snippet snippet_ref="MyAppQosLib::KeepLast1" />
            </qos_snippets>
            <datareader_qos>
                <history>
                    <kind>KEEP_LAST_HISTORY_QOS</kind>
                    <depth>20</depth>
                </history>    
            </datareader_qos>
        </qos_profile>
    </qos_library>

    <domain_library name="MyDomainLib">
        <domain name="MyShapeDomain" domain_id="1">
            <register_type name="Shape" type_ref="ShapesDemoTypes::ShapeType"/>
            <topic name="Square" register_type_ref="Shape">
                <datawriter_qos base_name="MyAppQosLib::MyQosShapeProfile"/>
                <datareader_qos base_name="MyAppQosLib::MyQosShapeProfile"/>
            </topic>
            <topic name="Circle" register_type_ref="ShapesDemoTypes::ShapeType" />
            <topic name="Triangle" register_type_ref="ShapesDemoTypes::ShapeType" />
        </domain>
    </domain_library>

    <domain_participant_library name="MyParticipantLib">
        <domain_participant name="AllShapesWriterParticipant" domain_ref="MyDomainLib::MyShapeDomain">
            <publisher name="MyPublisher">
                <data_writer name="MySquareWriter" topic_ref="Square" />
                <data_writer name="MyCircleWriter" topic_ref="Circle" />
                <data_writer name="MyTriangleWriter" topic_ref="Triangle" />
            </publisher>
        </domain_participant>
        <domain_participant name="AllShapesReaderParticipant" domain_ref="MyDomainLib::MyShapeDomain">
            <subscriber name="MySubscriber">
                <data_reader name="MySquareRdr" topic_ref="Square" />
                <data_reader name="MyCircleRdr" topic_ref="Circle" />
                <data_reader name="MyTriangleRdr" topic_ref="Triangle" />
            </subscriber>
        </domain_participant>        
    </domain_participant_library>

    <application_library name="MyApplicationLib">                
        <application name="ShapesDemoPublisherApp" >
            <domain_participant name="ShapesWriterParticipant" base_name="MyParticipantLib::AllShapesWriterParticipant" />
        </application>
        <application name="ShapesDemoPSubscriberApp" >
            <domain_participant name="ShapesReaderParticipant" base_name="MyParticipantLib::AllShapesReaderParticipant" />
        </application>        
    </application_library>

    <node_library name="MyNodeLib">
        <node name="MyNode1"/>
        <node name="MyNode2"/>
    </node_library>

    <deployment_library name="MyDeploymentLib">
        <deployment_scenario name="MyScenario">
            <deployment name="MyDeployment1">
                <node node_ref="MyNodeLib::MyNode1" />
                <applications>
                    <application name="App1" application_ref="MyApplicationLib::ShapesDemoPublisherApp" />
                </applications>
                <configuration/>
            </deployment>
            <deployment name="MyDeployment2">
                <node node_ref="MyNodeLib::MyNode2" />
                <applications>
                    <application name="App1" application_ref="MyApplications::SimpleShapesDemoApplication" />
                </applications>
                <configuration/>
            </deployment>
        </deployment_scenario>
    </deployment_library>
</dds>
