Skip to content

Commit d294198

Browse files
Add generic interfaces for RPC servers (#241)
* Refs #23325. Update swig file for RPC interfaces. Signed-off-by: Miguel Company <miguelcompany@eprosima.com> * Refs #23325. Update generated code. Signed-off-by: Miguel Company <miguelcompany@eprosima.com> --------- Signed-off-by: Miguel Company <miguelcompany@eprosima.com>
1 parent c8893fb commit d294198

File tree

6 files changed

+283
-170
lines changed

6 files changed

+283
-170
lines changed

fastdds_python/src/swig/fastdds/dds/rpc/interfaces.i

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,11 @@
1616
#include "fastdds/dds/rpc/interfaces.hpp"
1717
%}
1818

19+
%include "std_shared_ptr.i"
20+
21+
%shared_ptr(eprosima::fastdds::dds::rpc::RpcServer);
22+
%ignore eprosima::fastdds::dds::rpc::RpcServer::execute_request;
23+
24+
%include "fastdds/dds/rpc/interfaces/RpcRequest.hpp"
25+
%include "fastdds/dds/rpc/interfaces/RpcServer.hpp"
1926
%include "fastdds/dds/rpc/interfaces/RpcStatusCode.hpp"

fastdds_python_examples/RPCExample/generated_code/calculator.i

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,13 @@
2929

3030
// If using windows in debug, it would try to use python_d, which would not be found.
3131
%begin %{
32+
/*
33+
* From: https://github.com/swig/swig/issues/2638
34+
* When a module uses a type in a module that is defined in a different module,
35+
* a false positive memory leak is detected.
36+
* The following line silences this warning.
37+
*/
38+
#define SWIG_PYTHON_SILENT_MEMLEAK
3239
#ifdef _MSC_VER
3340
#define SWIG_PYTHON_INTERPRETER_NO_DEBUG
3441
#endif
@@ -74,6 +81,7 @@
7481

7582
%import(module="fastdds") "fastdds/dds/rpc/exceptions/RpcException.hpp"
7683
%import(module="fastdds") "fastdds/dds/rpc/exceptions/RpcOperationError.hpp"
84+
%import(module="fastdds") "fastdds/dds/rpc/interfaces/RpcServer.hpp"
7785

7886
%exception {
7987
try
@@ -228,35 +236,13 @@ namespace swig {
228236

229237

230238
%shared_ptr(calculator_base::BasicCalculator);
231-
%shared_ptr(calculator_base::BasicCalculatorServer);
232-
%extend calculator_base::BasicCalculatorServer
233-
{
234-
void run()
235-
{
236-
Py_BEGIN_ALLOW_THREADS
237-
self->run();
238-
Py_END_ALLOW_THREADS
239-
}
240-
}
241-
242239
%shared_ptr(calculator_base::BasicCalculatorServer_IServerImplementation);
243240
%shared_ptr(calculator_base::BasicCalculatorServerImplementation);
244241
%feature("director") calculator_base::BasicCalculatorServerImplementation;
245242

246243

247244

248245
%shared_ptr(Calculator);
249-
%shared_ptr(CalculatorServer);
250-
%extend CalculatorServer
251-
{
252-
void run()
253-
{
254-
Py_BEGIN_ALLOW_THREADS
255-
self->run();
256-
Py_END_ALLOW_THREADS
257-
}
258-
}
259-
260246
%shared_ptr(CalculatorServer_IServerImplementation);
261247
%shared_ptr(CalculatorServerImplementation);
262248
%feature("director") CalculatorServerImplementation;

fastdds_python_examples/RPCExample/generated_code/calculatorClient.cxx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ class BasicCalculatorClient : public BasicCalculator
205205
std::shared_ptr<T> result,
206206
std::promise<TResult>& promise)
207207
{
208+
result->info.related_sample_identity.writer_guid(requester_->get_requester_reader()->guid());
208209
if (fdds::RETCODE_OK == requester_->send_request((void*)&request, result->info))
209210
{
210211
std::lock_guard<std::mutex> _ (mtx_);
@@ -224,6 +225,7 @@ class BasicCalculatorClient : public BasicCalculator
224225
const RequestType& request,
225226
std::shared_ptr<T> result)
226227
{
228+
result->info.related_sample_identity.writer_guid(requester_->get_requester_reader()->guid());
227229
if (fdds::RETCODE_OK == requester_->send_request((void*)&request, result->info))
228230
{
229231
std::lock_guard<std::mutex> _ (mtx_);
@@ -719,6 +721,7 @@ class CalculatorClient : public Calculator
719721
std::shared_ptr<T> result,
720722
std::promise<TResult>& promise)
721723
{
724+
result->info.related_sample_identity.writer_guid(requester_->get_requester_reader()->guid());
722725
if (fdds::RETCODE_OK == requester_->send_request((void*)&request, result->info))
723726
{
724727
std::lock_guard<std::mutex> _ (mtx_);
@@ -738,6 +741,7 @@ class CalculatorClient : public Calculator
738741
const RequestType& request,
739742
std::shared_ptr<T> result)
740743
{
744+
result->info.related_sample_identity.writer_guid(requester_->get_requester_reader()->guid());
741745
if (fdds::RETCODE_OK == requester_->send_request((void*)&request, result->info))
742746
{
743747
std::lock_guard<std::mutex> _ (mtx_);

0 commit comments

Comments
 (0)