QsoPostIOCompletion()--Post I/O Completion Request


  Syntax
 #include <qsoasync.h>

 int QsoPostIOCompletion
 (int IOCompletionPort, Qso_OverlappedIO_t * communicationsArea)  


  Service Program Name: QSOSRV3

  Default Public Authority: *USE

  Threadsafe: Yes

The QsoPostIOCompletion function will post an Qso_OverlappedIO_t request on a specifed I/O completion port. This allows an application to notify a completion port that some function or activity has occurred. The application defines what that function or activity is within the Qso_OverlappedIO_t request.


Parameters

int IOCompletionPort (Input)
The I/O completion port that should be posted.

Qso_OverlappedIO_t * communicationsArea (Input/Output)
A pointer to a structure that contains the following information:

descriptorHandle (Input) - The descriptor handle is application-specific and is never used by the system. It is intended to make it easier for the application to keep track of information regarding a given socket connection.

buffer (Input) - Supplied value is preserved.

bufferLength (Input) - Supplied value is preserved.

postFlag (Input) - Supplied value is preserved.

fillBuffer (Input) - Supplied value is preserved.

returnValue (Output) - This field will be set to 0 if this operation completes successfully.

errnoValue (Output) - This field will be set to 0 if this operation completes successfully.

operationCompleted (Output) - This field is updated to QSOPOSTIOCOMPLETION.

secureDataTransferSize Not used.

bytesAvailable Not used.

operationWaitTime (Input) - A timeval structure which specifies a time to wait before posting this operation asynchronously to the I/O completion port with errnoValue set to EAGAIN.
           struct timeval {
                           long  tv_sec;   /* second          */
                           long  tv_usec;  /* microseconds    */
           };
If this field is set to zero, the operation will be posted immediately.

If postedDescriptor is closed before the timer expires, the operation will be posted to the I/O completion port with errnoValue set to ECLOSED.

The minimum operationWaitTime is 1 second. The microseconds field (tv_usec) in the timeval is not used and must be set to zero.

postedDescriptor This field is only relevant if a non-zero timeval was specified in operationWaitTime. This is the socket descriptor to be associated with the timer. If this descriptor is closed before the timer expires, the operation will be posted to the I/O completion port with errnoValue set to ECLOSED.

reserved1 (Input) - Must be set to hex zeroes.

reserved2 (Input) - Must be set to hex zeroes.

Authorities

No authorization is required.


Return Values

QsoPostIOCompletion() returns an integer. Possible values are:


Errno Conditions

When QsoPostIOCompletion() fails, errno can be set to one of the following:

[EINVAL] The I/O completion port or a reserved field was specified that was not valid or operationWaitTime.tv_sec was negative or operationWaitTime.tv_usec was not zero.

[EDESTROYED] The I/O completion port has been destroyed.

[ENOBUFS] There was not enough buffer space for the requested operation. Check the maximum allowed storage for the executing user profile.

[ENOMEM] The I/O completion port is full and cannot accept any more messages at this time.


Error Messages

Message ID Error Message Text
CPFA081 E Unable to set return value or error code.
CPE3418 E Possible APAR condition or hardware failure.
CPF9872 E Program or service program &1 in library &2 ended. Reason code &3.


Related Information



API introduced: V5R1
Top | UNIX-Type APIs | APIs by category