### Object handle service requirements

An object handle service must meet the requirements for a handle service, as well as the additional requirements listed below.

In the table below, `X` denotes an object handle service class, `a` denotes a value of type `X`, `b` denotes a value of type `X::implementation_type`, `ec` denotes a value of type `error_code`, and `wh` denotes a value meeting `WaitHandler` requirements.

Table 19. ObjectHandleService requirements

expression | return type | assertion/note pre/post-condition
--- | --- | ---
`a.wait(b, ec);` | `error_code` | pre: `a.is_open(b)`. Synchronously waits for the object represented by handle `b` to become signalled.
`a.async_wait(b, wh);` | `void` | pre: `a.is_open(b)`. Initiates an asynchronous operation to wait for the object represented by handle `b` to become signalled. The operation is performed via the `io_service` object `a.get_io_service()` and behaves according to asynchronous operation requirements.