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

( CassError error )

Gets a description for an error code.

Parameters:
Name Type Details
in error CassError
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

( CassLogLevel 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 CassLogLevel
void

cass_log_set_callback

( CassLogCallback callback, void * 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 CassLogCallback

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

in data void *

An opaque data object passed to the callback.

void

cass_log_set_queue_size

( cass_size_t 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 cass_size_t
const char *

cass_log_level_string

( CassLogLevel log_level )

Gets the string for a log level.

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

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