Architecture
The5800 system C API client supports two dierent access patterns: a synchronous “EZ” access
verysimilar to the current Java implementation, and a more exible, nonblocking access based
onthe POSIX model.
Note– For this release, the nonblocking C API client is not implemented.
Interfaces
TheC client library interacts with the 5800 system server entirely through an HTTP protocol.
Retrying Operations
Callsto the C API should be wrapped with retry logic so that their applications are resilient to
transientfailures that may be experienced when a node or switch fails while servicing an
operation.
MultithreadedAccess
Boththe synchronous and the nonsynchronous C APIs are fully thread-safe and can be used
simultaneouslyin multiple threads from the same process. Each thread must call
hc_session_create_ez”on page 53 to create its own session. Sessions must not be shared
betweenthreads.
Caution– Name resolution must be done in a single thread with the subsequent IP address
passedto hc_session_create_ez, otherwise core dumps will occur if multiple name resolution
threadscall getaddrinfo at the same time.
Performanceand Sc alability
The5800 system C client library provides high performance and is highly scalable.
Thesynchronous C API performs its own calls to select() internally.
Forthe nonblocking C API (not yet implemented), access is provided to the underlying fd_set
sothat all pending I/O operations can be serviced by a single thread on the basis of status
returnedby the POSIX select() function, possibly after merging the 5800 system fd_set with
someexternal, application-specic fd_set.
Overviewof the 5800 System C Client API
SunStorageTek5800 System Client API Reference Manual • June 200840