Grid Community Toolkit  6.2.1705709074 (tag: v6.2.20240202)
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Reading/Writing

Reading/Writing. More...

Reading/Writing.

Both the globus_xio_register_read() and globus_xio_register_write() calls follow similar semantics as described below.

If the waitforbytes parameter is greater than zero, the io will happen asynchronously and be completed when at least waitforbytes has been read/written.

If the waitforbytes parameter is equal to zero, one of the following alternative behaviors occur:

If the length of the buffer is > 0 the read or write happens synchronously. If the user is using one of the blocking xio calls, no internal callback will occur.

If the length of the buffer is also 0, the call behaves like an asynchronous notification of data ready to be either read or written. ie, an asynchronous select().

In any case, when an error or EOF occurs before the waitforbytes request has been met, the outgoing nbytes is set to the amount of data actually read/written before the error or EOF occurred.

You may either use GLOBUS_XIO_FILE_SEEK or GLOBUS_XIO_SEEK to position the file pointer before each read or write or you can specify the desired offset on a data descriptor with the xio cmd, GLOBUS_XIO_DD_SET_OFFSET. Simultaneous reading and writing is only predictable if the data descriptor method is used.