Connection-level routines are routines in Client-Library and Bulk-Library that take a pointer to any of the following structures as an argument:
A connection structure (CS_CONNECTION *)
A command structure (CS_COMMAND *)
A directory object structure (CS_DS_OBJECT *)
A Bulk-Library bulk descriptor structure (CS_BLKDESC *)
The following routines are also considered connection-level routines:
ct_callback (only with a non-NULL connection argument).
ct_debug (only with a NULL context argument). Note that ct_debug(CS_DBG_ALL) and other calls that require a non-NULL context are considered thread-unsafe context-level calls.
ct_poll (only with a non-NULL connection argument).
Calls to routines using a command structure, a directory object structure, or a bulk descriptor structure should be treated as connection-level calls on the parent connection. Thread-safe calls to connection-level routines abide by the following restrictions:
Threads that share the same connection must synchronize connection-level calls so that:
Calls are not simultaneously active, and
Calls occur in the intended order.
Calls that reference a given connection structure cannot be simultaneously active with any thread-unsafe context-level call that access the connection's parent context. The thread-unsafe context-level calls are listed in Table 2-26.