a0IReceiveBuffer()

Starts a non-blocking receive with a buffer.


Syntax

a0tError a0IReceiveBuffer(
a0tPort *port,
int source,
int tag,
a0tRequest *request,
a0tBuffer *buffer );

Arguments

Namerd/wrDescription
port read Port to listen to (on caller's node).
source read Source node to listen to.
tag read tag to use.
request write Request descriptor to hold the status.
buffer write Receive buffer.

Description

This function starts a non-blocking receive on a given port port, from a given source node source (or A0AnySource if any node will do), with a given tag tag. A request is posted to receive a buffer in buffer.

The buffer cannot be used before the completion of the request.

The full contents of a buffer is replaced every time a receive is performed. There is no need to call a0ClearBuffer() prior to receive it.

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.

On return of this function, the variable pointed by request contains an opaque request that can be used later to test or wait the completion of the receive operation or get information about it.


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

a0ReceiveBuffer() a0Receive() a0IReceive() a0ISendBuffer() a0Pack() a0Unpack()