C/C++ driver for Apache Cassandra. Uses the Cassandra Query Language versions 3 over the Cassandra Binary Protocol (versions 1 or 2).

Macros

CASS_VERSION_MAJOR

= 1

CASS_VERSION_MINOR

= 0

CASS_VERSION_PATCH

= 2

CASS_VERSION_SUFFIX

= ""

CASS_INET_V4_LENGTH

= 4

The size of a IPv4 address

CASS_INET_V6_LENGTH

= 16

The size of a IPv6 address

CASS_UUID_STRING_LENGTH

= 37

The size of a hexidecimal UUID string including a null terminator.

CASS_LOG_MAX_MESSAGE_SIZE

= 256

Maximum size of a log message

Types

cass_float_t

typedef float cass_float_t

cass_double_t

typedef double cass_double_t

cass_int8_t

typedef char cass_int8_t

cass_uint8_t

typedef unsigned char cass_uint8_t

cass_int16_t

typedef short cass_int16_t

cass_uint16_t

typedef unsigned short cass_uint16_t

cass_int32_t

typedef int cass_int32_t

cass_uint32_t

typedef unsigned int cass_uint32_t

cass_int64_t

typedef long long cass_int64_t

cass_uint64_t

typedef unsigned long long cass_uint64_t

cass_size_t

typedef size_t cass_size_t

cass_byte_t

typedef cass_uint8_t cass_byte_t

cass_duration_t

typedef cass_uint64_t cass_duration_t

CassCluster

typedef struct CassCluster_ CassCluster

CassSession

typedef struct CassSession_ CassSession

CassStatement

typedef struct CassStatement_ CassStatement

CassBatch

typedef struct CassBatch_ CassBatch

CassFuture

typedef struct CassFuture_ CassFuture

CassPrepared

typedef struct CassPrepared_ CassPrepared

CassResult

typedef struct CassResult_ CassResult

CassIterator

typedef struct CassIterator_ CassIterator

CassRow

typedef struct CassRow_ CassRow

CassValue

typedef struct CassValue_ CassValue

CassCollection

typedef struct CassCollection_ CassCollection

CassSsl

typedef struct CassSsl_ CassSsl

CassSchema

typedef struct CassSchema_ CassSchema

CassSchemaMeta

typedef struct CassSchemaMeta_ CassSchemaMeta

CassSchemaMetaField

typedef struct CassSchemaMetaField_ CassSchemaMetaField

CassUuidGen

typedef struct CassUuidGen_ CassUuidGen

CassFutureCallback

typedef void(* CassFutureCallback) (CassFuture *future, void *data)

A callback that’s notified when the future is set.

CassLogCallback

typedef void(* CassLogCallback) (const CassLogMessage *message, void *data)

A callback that’s used to handle logging.

Enums

cass_bool_t

cass_false = 0
cass_true = 1

CassConsistency

CASS_CONSISTENCY_ANY = 0x0000
CASS_CONSISTENCY_ONE = 0x0001
CASS_CONSISTENCY_TWO = 0x0002
CASS_CONSISTENCY_THREE = 0x0003
CASS_CONSISTENCY_QUORUM = 0x0004
CASS_CONSISTENCY_ALL = 0x0005
CASS_CONSISTENCY_LOCAL_QUORUM = 0x0006
CASS_CONSISTENCY_EACH_QUORUM = 0x0007
CASS_CONSISTENCY_SERIAL = 0x0008
CASS_CONSISTENCY_LOCAL_SERIAL = 0x0009
CASS_CONSISTENCY_LOCAL_ONE = 0x000A

CassValueType

CASS_VALUE_TYPE_UNKNOWN = 0xFFFF
CASS_VALUE_TYPE_CUSTOM = 0x0000
CASS_VALUE_TYPE_ASCII = 0x0001
CASS_VALUE_TYPE_BIGINT = 0x0002
CASS_VALUE_TYPE_BLOB = 0x0003
CASS_VALUE_TYPE_BOOLEAN = 0x0004
CASS_VALUE_TYPE_COUNTER = 0x0005
CASS_VALUE_TYPE_DECIMAL = 0x0006
CASS_VALUE_TYPE_DOUBLE = 0x0007
CASS_VALUE_TYPE_FLOAT = 0x0008
CASS_VALUE_TYPE_INT = 0x0009
CASS_VALUE_TYPE_TEXT = 0x000A
CASS_VALUE_TYPE_TIMESTAMP = 0x000B
CASS_VALUE_TYPE_UUID = 0x000C
CASS_VALUE_TYPE_VARCHAR = 0x000D
CASS_VALUE_TYPE_VARINT = 0x000E
CASS_VALUE_TYPE_TIMEUUID = 0x000F
CASS_VALUE_TYPE_INET = 0x0010
CASS_VALUE_TYPE_LIST = 0x0020
CASS_VALUE_TYPE_MAP = 0x0021
CASS_VALUE_TYPE_SET = 0x0022

CassCollectionType

CASS_COLLECTION_TYPE_LIST = CASS_VALUE_TYPE_LIST
CASS_COLLECTION_TYPE_MAP = CASS_VALUE_TYPE_MAP
CASS_COLLECTION_TYPE_SET = CASS_VALUE_TYPE_SET

CassBatchType

CASS_BATCH_TYPE_LOGGED = 0
CASS_BATCH_TYPE_UNLOGGED = 1
CASS_BATCH_TYPE_COUNTER = 2

CassIteratorType

CASS_ITERATOR_TYPE_RESULT
CASS_ITERATOR_TYPE_ROW
CASS_ITERATOR_TYPE_COLLECTION
CASS_ITERATOR_TYPE_MAP
CASS_ITERATOR_TYPE_SCHEMA_META
CASS_ITERATOR_TYPE_SCHEMA_META_FIELD

CassSchemaMetaType

CASS_SCHEMA_META_TYPE_KEYSPACE
CASS_SCHEMA_META_TYPE_TABLE
CASS_SCHEMA_META_TYPE_COLUMN

CassLogLevel

CASS_LOG_DISABLED
CASS_LOG_CRITICAL
CASS_LOG_ERROR
CASS_LOG_WARN
CASS_LOG_INFO
CASS_LOG_DEBUG
CASS_LOG_TRACE

CassSslVerifyFlags

CASS_SSL_VERIFY_NONE = 0
CASS_SSL_VERIFY_PEER_CERT = 1
CASS_SSL_VERIFY_PEER_IDENTITY = 2

CassErrorSource

CASS_ERROR_SOURCE_NONE
CASS_ERROR_SOURCE_LIB
CASS_ERROR_SOURCE_SERVER
CASS_ERROR_SOURCE_SSL
CASS_ERROR_SOURCE_COMPRESSION

CassError

CASS_OK = 0
CASS_ERROR_LIB_BAD_PARAMS = (( CASS_ERROR_SOURCE_LIB << 24) | 1 )
CASS_ERROR_LIB_NO_STREAMS = (( CASS_ERROR_SOURCE_LIB << 24) | 2 )
CASS_ERROR_LIB_UNABLE_TO_INIT = (( CASS_ERROR_SOURCE_LIB << 24) | 3 )
CASS_ERROR_LIB_MESSAGE_ENCODE = (( CASS_ERROR_SOURCE_LIB << 24) | 4 )
CASS_ERROR_LIB_HOST_RESOLUTION = (( CASS_ERROR_SOURCE_LIB << 24) | 5 )
CASS_ERROR_LIB_UNEXPECTED_RESPONSE = (( CASS_ERROR_SOURCE_LIB << 24) | 6 )
CASS_ERROR_LIB_REQUEST_QUEUE_FULL = (( CASS_ERROR_SOURCE_LIB << 24) | 7 )
CASS_ERROR_LIB_NO_AVAILABLE_IO_THREAD = (( CASS_ERROR_SOURCE_LIB << 24) | 8 )
CASS_ERROR_LIB_WRITE_ERROR = (( CASS_ERROR_SOURCE_LIB << 24) | 9 )
CASS_ERROR_LIB_NO_HOSTS_AVAILABLE = (( CASS_ERROR_SOURCE_LIB << 24) | 10 )
CASS_ERROR_LIB_INDEX_OUT_OF_BOUNDS = (( CASS_ERROR_SOURCE_LIB << 24) | 11 )
CASS_ERROR_LIB_INVALID_ITEM_COUNT = (( CASS_ERROR_SOURCE_LIB << 24) | 12 )
CASS_ERROR_LIB_INVALID_VALUE_TYPE = (( CASS_ERROR_SOURCE_LIB << 24) | 13 )
CASS_ERROR_LIB_REQUEST_TIMED_OUT = (( CASS_ERROR_SOURCE_LIB << 24) | 14 )
CASS_ERROR_LIB_UNABLE_TO_SET_KEYSPACE = (( CASS_ERROR_SOURCE_LIB << 24) | 15 )
CASS_ERROR_LIB_CALLBACK_ALREADY_SET = (( CASS_ERROR_SOURCE_LIB << 24) | 16 )
CASS_ERROR_LIB_INVALID_STATEMENT_TYPE = (( CASS_ERROR_SOURCE_LIB << 24) | 17 )
CASS_ERROR_LIB_NAME_DOES_NOT_EXIST = (( CASS_ERROR_SOURCE_LIB << 24) | 18 )
CASS_ERROR_LIB_UNABLE_TO_DETERMINE_PROTOCOL = (( CASS_ERROR_SOURCE_LIB << 24) | 19 )
CASS_ERROR_LIB_NULL_VALUE = (( CASS_ERROR_SOURCE_LIB << 24) | 20 )
CASS_ERROR_LIB_NOT_IMPLEMENTED = (( CASS_ERROR_SOURCE_LIB << 24) | 21 )
CASS_ERROR_LIB_UNABLE_TO_CONNECT = (( CASS_ERROR_SOURCE_LIB << 24) | 22 )
CASS_ERROR_LIB_UNABLE_TO_CLOSE = (( CASS_ERROR_SOURCE_LIB << 24) | 23 )
CASS_ERROR_SERVER_SERVER_ERROR = (( CASS_ERROR_SOURCE_SERVER << 24) | 0x0000 )
CASS_ERROR_SERVER_PROTOCOL_ERROR = (( CASS_ERROR_SOURCE_SERVER << 24) | 0x000A )
CASS_ERROR_SERVER_BAD_CREDENTIALS = (( CASS_ERROR_SOURCE_SERVER << 24) | 0x0100 )
CASS_ERROR_SERVER_UNAVAILABLE = (( CASS_ERROR_SOURCE_SERVER << 24) | 0x1000 )
CASS_ERROR_SERVER_OVERLOADED = (( CASS_ERROR_SOURCE_SERVER << 24) | 0x1001 )
CASS_ERROR_SERVER_IS_BOOTSTRAPPING = (( CASS_ERROR_SOURCE_SERVER << 24) | 0x1002 )
CASS_ERROR_SERVER_TRUNCATE_ERROR = (( CASS_ERROR_SOURCE_SERVER << 24) | 0x1003 )
CASS_ERROR_SERVER_WRITE_TIMEOUT = (( CASS_ERROR_SOURCE_SERVER << 24) | 0x1100 )
CASS_ERROR_SERVER_READ_TIMEOUT = (( CASS_ERROR_SOURCE_SERVER << 24) | 0x1200 )
CASS_ERROR_SERVER_SYNTAX_ERROR = (( CASS_ERROR_SOURCE_SERVER << 24) | 0x2000 )
CASS_ERROR_SERVER_UNAUTHORIZED = (( CASS_ERROR_SOURCE_SERVER << 24) | 0x2100 )
CASS_ERROR_SERVER_INVALID_QUERY = (( CASS_ERROR_SOURCE_SERVER << 24) | 0x2200 )
CASS_ERROR_SERVER_CONFIG_ERROR = (( CASS_ERROR_SOURCE_SERVER << 24) | 0x2300 )
CASS_ERROR_SERVER_ALREADY_EXISTS = (( CASS_ERROR_SOURCE_SERVER << 24) | 0x2400 )
CASS_ERROR_SERVER_UNPREPARED = (( CASS_ERROR_SOURCE_SERVER << 24) | 0x2500 )
CASS_ERROR_SSL_INVALID_CERT = (( CASS_ERROR_SOURCE_SSL << 24) | 1 )
CASS_ERROR_SSL_INVALID_PRIVATE_KEY = (( CASS_ERROR_SOURCE_SSL << 24) | 2 )
CASS_ERROR_SSL_NO_PEER_CERT = (( CASS_ERROR_SOURCE_SSL << 24) | 3 )
CASS_ERROR_SSL_INVALID_PEER_CERT = (( CASS_ERROR_SOURCE_SSL << 24) | 4 )
CASS_ERROR_SSL_IDENTITY_MISMATCH = (( CASS_ERROR_SOURCE_SSL << 24) | 5 )
CASS_ERROR_SSL_PROTOCOL_ERROR = (( CASS_ERROR_SOURCE_SSL << 24) | 6 )

Functions

const char *

cass_error_desc

( error )

Gets a description for an error code.

Parameters:
Name Type Details
in error
Returns:
Type Details
const char *

A null-terminated string describing the error.

void

cass_log_cleanup

( )

Deprecated:

This is no longer useful and does nothing. Expect this to be removed in a few releases.

Explicty wait for the log to flush and deallocate resources. This MUST be the last call using the library. It is an error to call any cass_*() functions after this call.

void

cass_log_set_level

( log_level )

Sets the log level.

Note: This needs to be done before any call that might log, such as any of the cass_cluster_*() or cass_ssl_*() functions.

Default: CASS_LOG_WARN

Parameters:
Name Type Details
in log_level
void

cass_log_set_callback

( callback, data )

Sets a callback for handling logging events.

Note: This needs to be done before any call that might log, such as any of the cass_cluster_*() or cass_ssl_*() functions.

Default: An internal callback that prints to stderr

Parameters:
Name Type Details
in callback

A callback that handles logging events. This can be called by several threads concurrently so access to shared resources must be synchronized.

in data

An opaque data object passed to the callback.

void

cass_log_set_queue_size

( queue_size )

Deprecated:

This is no longer useful and does nothing. Expect this to be removed in a few releases.

Sets the log queue size.

Note: This needs to be done before any call that might log, such as any of the cass_cluster_*() or cass_ssl_*() functions.

Default: 2048

Parameters:
Name Type Details
in queue_size
const char *

cass_log_level_string

( log_level )

Gets the string for a log level.

Parameters:
Name Type Details
in log_level
Returns:
Type Details
const char *

A null-terminated string for the log level. Example: “ERROR”, “WARN”, “INFO”, etc.