From 7efb9f0fc0cbf94bf820146b3a465b072d1e3fdc Mon Sep 17 00:00:00 2001
From: Lucia Echevarria <luciaechevarria@eprosima.com>
Date: Fri, 21 Jun 2024 08:56:25 +0200
Subject: [PATCH] Extend DomainParticipantFactory.i API

Signed-off-by: Lucia Echevarria <luciaechevarria@eprosima.com>
---
 .../dds/domain/DomainParticipantFactory.i     | 28 +++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/fastdds_python/src/swig/fastdds/dds/domain/DomainParticipantFactory.i b/fastdds_python/src/swig/fastdds/dds/domain/DomainParticipantFactory.i
index 51a0e3dc..950579bc 100644
--- a/fastdds_python/src/swig/fastdds/dds/domain/DomainParticipantFactory.i
+++ b/fastdds_python/src/swig/fastdds/dds/domain/DomainParticipantFactory.i
@@ -48,6 +48,34 @@
         return self->create_participant(domain_id, qos, listener, mask);
     }
 
+    /**
+     * Create a Participant.
+     *
+     * @param extended_qos DomainParticipantExtendedQos Reference.
+     * @param listener DomainParticipantListener Pointer (default: nullptr)
+     * @param mask StatusMask Reference (default: all)
+     * @return DomainParticipant pointer. (nullptr if not created.)
+     */
+    DomainParticipant* create_participant(
+            const DomainParticipantExtendedQos& extended_qos,
+            DomainParticipantListener* listener = nullptr,
+            const StatusMask& mask = eprosima::fastdds::dds::StatusMask::all())
+    {
+        if (nullptr != listener)
+        {
+            Swig::Director* director = SWIG_DIRECTOR_CAST(listener);
+
+            if (nullptr != director)
+            {
+                SWIG_PYTHON_THREAD_BEGIN_BLOCK;
+                Py_INCREF(director->swig_get_self());
+                SWIG_PYTHON_THREAD_END_BLOCK;
+            }
+        }
+
+        return self->create_participant(extended_qos.domainId(), extended_qos, listener, mask);
+    }
+
     /**
      * Create a Participant.
      *