3.1.4.1.1 Asynchronous Table Preparation

The client MAY request that the server perform a RopSetColumns ([MS-OXCROPS] section 2.2.5.1), RopSortTable ([MS-OXCROPS] section 2.2.5.2), or RopRestrict ([MS-OXCROPS] section 2.2.5.3) ROP request asynchronously.<17> In this case, the client MUST NOT request additional asynchronous work to be done until pending asynchronous work is complete or canceled by using a RopAbort ROP request ([MS-OXCROPS] section 2.2.5.5). If the client requests additional synchronous work while an existing asynchronous request is pending, the server will respond in one of two ways:

  • The server returns ecBusy, as specified in [MS-OXCDATA] section 2.4, and does not perform the requested action.

  • The server waits until the first asynchronous action is complete, then completes the synchronous action and sends the ROP response at that time.

When a higher layer, or the user, needs to know the status of pending asynchronous requests, the client MUST get the status using a RopGetStatus ROP request ([MS-OXCROPS] section 2.2.5.6). When a higher layer, or the user, needs to abort a pending asynchronous request (to set columns, sort the table, or restrict), the client MUST send a RopAbort ROP request. After a successful RopAbort ROP request, the client MUST assume the table is in an undefined state and use the RopResetTable ROP ([MS-OXCROPS] section 2.2.5.15) before using the table again.

If an asynchronous request to a RopSetColumns, RopSortTable, or RopRestrict ROP fails with the error "ecNotSupported", the client can reattempt the request synchronously.

If a RopSetColumns ROP request fails, the client MUST assume that the table has an invalid column set and MUST perform a successful RopSetColumns ROP request before proceeding.

If a RopSortTable ROP request fails, the client MUST assume that the table has an invalid sort and MUST perform a successful RopSortTable ROP request before proceeding.

If a RopRestrict ROP request fails, the client MUST assume that the table has an invalid restriction and MUST perform a successful RopRestrict ROP request before proceeding.