svc_client_send_receive could be improved significantly in blocking dual
channel case.
--------------------------------------------------------------------------------------
Key: AXIS2C-1189
URL: https://issues.apache.org/jira/browse/AXIS2C-1189
Project: Axis2-C
Issue Type: Bug
Environment: all
Reporter: Damitha Kumarage
I observered that in svc_client_send_receive function's blocking dual related
code section could be improved.
Currently after establishing the callback and starting listener manager it
repeatedly call op_client_receive function in a loop. It in tern call engine
receive.It then extract the response soap envelope from the response message
context passed to engine receive. But this is redundant and expensive calls to
engine_receive. By this time, the callback we passed already contain the
response soap envelope. What we need is just the following code to get the
response envelope instead of having some unneccessary complexity.
index = axis2_options_get_timeout_in_milli_seconds(svc_client->options, env) /
10;
while(!axis2_callback_get_complete(callback, env))
{
if(index-- >= 0)
{
AXIS2_USLEEP(10000);
}
else
{
AXIS2_ERROR_SET(env->error, AXIS2_ERROR_RESPONSE_TIMED_OUT,
AXIS2_FAILURE);
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Response time out");
}
soap_envelope = axis2_callback_get_envelope(callback, env);
}
Note that I use the function axis2_callback_get_complete() function as the loop
condition.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]