a0IStartRemoteUrgent()

Executes a non-blocking urgent service on a remote node.


Syntax

a0tError a0IStartRemoteUrgent(
int node,
int service,
a0tRequest *request,
a0tBuffer *buffer );

Arguments

Namerd/wrDescription
node read Node on which the service is executed.
service read Service to be executed.
request write Request descriptor to hold the status.
buffer read Buffer passed to the service.

Description

The service service is executed remotely on node node with parameters passed in buffer buffer (that must be of type A0UrgentBufferType). This function doesn't block the calling thread until the service is executed remotely.

If no parameters are needed, a NULL buffer can be passed to this function.

If a NULL is passed as request, no structures are kept after the request completion, so it cannot be tested or waited later. It is supposed that the program has other means to find out if the request has ended, as for example, a subsequent request.

The difference with starting a remote thread is that here the service is executed directly by a daemon thread, without creation of an independent thread. The function activated by an urgent service must not block.


Return Values

If an error condition occurs, it returns the error code, otherwise it returns A0ErrOk. Possible values are as follows:
Error CodeDescription
A0Err...Some error occurred.
A0ErrOkSuccessful completion.

See Also

a0NewService() a0IStartRemoteThread() a0StartRemoteUrgent()