A CS_CLIENTMSG structure contains information about a Client-Library error or informational message.
Client-Library uses a CS_CLIENTMSG structure in two ways:
For connections using the callback method to handle messages, a CS_CLIENTMSG is the third parameter that Client-Library passes to an application’s client message callback routine.
For connections handling messages inline, ct_diag returns information in a CS_CLIENTMSG.
For information on how to handle Client-Library error handling and server message handling, see “Error handling”.
A CS_CLIENTMSG structure is defined as follows:
/*
** CS_CLIENTMSG
** The Client-Library client message structure.
*/
typedef struct _cs_clientmsg
{
CS_INT severity;
CS_MSGNUM msgnumber;
CS_CHAR msgstring[CS_MAX_MSG];
CS_INT msgstringlen;
/*
** If the error involved the operating
** system, the following fields contain
** operating-system-specific information:
*/
CS_INT osnumber;
CS_CHAR osstring[CS_MAX_MSG];
CS_INT osstringlen;
/*
** Other information:
*/
CS_INT status;
CS_BYTE sqlstate[CS_SQLSTATE_SIZE];
CS_INT sqlstatelen;
} CS_CLIENTMSG;
where:
severity is a symbolic value representing the severity of the message. Table 2-11 shows the legal values for severity:
Severity |
Explanation |
---|---|
CS_SV_INFORM |
No error has occurred. The message is informational. |
CS_SV_CONFIG_FAIL |
A Sybase configuration error has been detected. Configuration errors include missing localization files, a missing interfaces file, and an unknown server name in the interfaces file. |
CS_SV_RETRY_FAIL |
An operation has failed, but can be retried. An example of this type of operation is a network read that times out. |
CS_SV_API_FAIL |
A Client-Library routine generated an error. This error is typically caused by a bad parameter or calling sequence. The server connection is probably usable. |
CS_SV_RESOURCE_FAIL |
A resource error has occurred. This error is typically caused by a malloc failure or lack of file descriptors. The server connection is probably not usable. |
CS_SV_COMM_FAIL |
An unrecoverable error in the server. The server connection is not usable. |
CS_SV_INTERNAL_FAIL |
An internal Client-Library error has occurred. |
CS_SV_FATAL |
A serious error has occurred. All server connections are unusable. |
msgnumber is the Client-Library message number. See “Client-Library message numbers”.
msgstring is the null-terminated Client-Library message string.
If an application is not sequencing messages, msgstring is guaranteed to be null-terminated, even if it has been truncated.
If an application is sequencing messages, msgstring is null-terminated only if it is the last chunk of a sequenced message.
msgstringlen is the length, in bytes, of msgstring. This is always the actual length, never the symbolic value CS_NULLTERM.
osnumber is the operating system error number, if any. Client-Library sets osnumber to 0 if no operating system error has occurred.
osstring is the null-terminated operating system error string, if any.
osstringlen is the length of osstring. This is always the actual length, never the symbolic value CS_NULLTERM.
status is a bitmask that indicates various types of information, such as whether or not this is the first, a middle, or the last chunk of an error message. The values that can be present in status include:
Symbolic value |
Meaning |
---|---|
CS_FIRST_CHUNK |
The message text contained in msgstring is the first chunk of the message. If CS_FIRST_CHUNK and CS_LAST_CHUNK are both on, then msgstring contains the entire message. If neither CS_FIRST_CHUNK nor CS_LAST_CHUNK is on, then msgstring contains a middle chunk of the message. |
CS_LAST_CHUNK |
The message text contained in msgstring is the last chunk of the message. If CS_FIRST_CHUNK and CS_LAST_CHUNK are both on, then msgstring contains the entire message. If neither CS_FIRST_CHUNK nor CS_LAST_CHUNK is on, then msgstring contains a middle chunk of the message. |
sqlstate is a byte string describing the error.
Not all client messages have SQL state values associated with them. If no SQL state value is associated with a message, sqlstate has the value “ZZZZZ”.
sqlstatelen is the length, in bytes, of the sqlstate string.