How to disable XML-RPC multicall

Find and share HowTos to various installations / configurations!
6 posts • Page 1 of 1
vedadramovic
Posts:121
Joined: Mon Apr 07, 2014 10:36 am

How to disable XML-RPC multicall

Post by vedadramovic »

Hello is there a way to disable XML-RPC multicall (system.multicall) in control manager?
used functions are:
(#uses "CtrlXmlRpc")
xmlrpcClient();
xmlrpcConnectToServer(id, host, port, secure);
xmlrpcCall(id, xmlRpcMethod, args, res);
xmlrpcCloseServer(id);


We have control manager that uses dpQueryConnectSingle(...)
This manager communicates with third party devices and software using XML-RPC.
In some cases XML-RPC multicall is generated form WinCCOA even each XML-RPC call is made in different thread.

Best regards,
Vedad

leoknipp
Posts:2928
Joined: Tue Aug 24, 2010 7:28 pm

Re: How to disable XML-RPC multicall

Post by leoknipp »

Hello,

can you please describe in detail what is meant with "multicall".
Does it mean that the function xmlrpcCall() is started several times (even if the first call was not finished)?

Best Regards
Leopold Knipp
Senior Support Specialist

e_hagenaar
Posts:2
Joined: Fri Sep 01, 2017 2:43 pm

Re: How to disable XML-RPC multicall

Post by e_hagenaar »

Did you find a solution? because i have the same issue.

Best regards,

Erik-Jan
Vedad Ramovic wrote:
Hello is there a way to disable XML-RPC multicall (system.multicall) in control manager?
used functions are:
(#uses "CtrlXmlRpc")
xmlrpcClient();
xmlrpcConnectToServer(id, host, port, secure);
xmlrpcCall(id, xmlRpcMethod, args, res);
xmlrpcCloseServer(id);


We have control manager that uses dpQueryConnectSingle(...)
This manager communicates with third party devices and software using XML-RPC.
In some cases XML-RPC multicall is generated form WinCCOA even each XML-RPC call is made in different thread.

Best regards,
Vedad

vedadramovic
Posts:121
Joined: Mon Apr 07, 2014 10:36 am

Re: How to disable XML-RPC multicall

Post by vedadramovic »

Hello Erik-Jan,
yes.

When you call function xmlrpcConnectToServer() make sure to use different "id" as a parameter in every call. When you use the same "id" procedure thinks that it is meant for the same device, so it is making one connection with multiple XML-RPC calls.

Example.

string id = rand();
xmlrpcConnectToServer(id, host, port, secure);

Best regards,
Vedad

e_hagenaar
Posts:2
Joined: Fri Sep 01, 2017 2:43 pm

Re: How to disable XML-RPC multicall

Post by e_hagenaar »

Hello Vedad,

Thank you very much! I used the getCurrentTime() but when the calls a made at more or less the same moment the id is the same and you get the multicall.....

Best regards,
Erik-Jan

Vedad Ramovic wrote:
Hello Erik-Jan,
yes.

When you call function xmlrpcConnectToServer() make sure to use different "id" as a parameter in every call. When you use the same "id" procedure thinks that it is meant for the same device, so it is making one connection with multiple XML-RPC calls.

Example.

string id = rand();
xmlrpcConnectToServer(id, host, port, secure);

Best regards,
Vedad

fmulder
Posts:330
Joined: Wed Feb 03, 2010 9:46 am

Re: How to disable XML-RPC multicall

Post by fmulder »

Never(!) use rand() or getCurrentTime() as a unique id. rand() may eventually give the same number (although the chance is very small) and getCurrentTime() will give the same result when your application is too fast. Simply use a global integer that you increment every time.

Code: Select all

global int g_iUnique = 0;

int iMyId = g_iUnique++;
share the fun
Frenk Mulder

6 posts • Page 1 of 1