Capabilities

An Open Server application and a client must agree on what requests the client can issue and what responses the Open Server application will return. For example, a client may want to issue language requests, but the Open Server application may not be equipped with a parser to process such requests. Similarly, a client may not want the Open Server application to return text or image data if the client is not equipped to handle it. A client/server connection’s capabilities determine the types of client requests and server responses permitted for that connection.

The Open Server application ultimately determines which capabilities are valid for the connection. If the client does not accept these capabilities, its only option is to close the connection.

There are two types of capability negotiation: transparent and explicit. In transparent negotiations, the Open Server application assigns a default set of possible client requests and Open Server responses. In explicit negotiations, the Open Server application includes code to negotiate capabilities, using the srv_capability_info routine.

Transparent negotiation is part of both Open Server and Open Client’s default behavior. Therefore, an Open Server application must call srv_capability_info if it wants to support something other than the default set of capabilities.