View on
MetaCPAN is shutting down
For details read Perl NOC. After June 25th this page will redirect to
Paul Evans > Protocol-CassandraCQL-0.12 > Protocol::CassandraCQL::Frames



Annotate this POD


Open  2
View/Report Bugs
Module Version: 0.12   Source  


Protocol::CassandraCQL::Frames - build or parse frame bodies for specific message types


 use Protocol::CassandraCQL qw( build_frame );
 use Protocol::CassandraCQL::Frames qw( build_query_frame );

 my $bytes = build_frame( 0x01, 0, $streamid, OPCODE_QUERY,
    build_query_frame( 1,
       cql => "CQL STRING",
       consistency => $consistency


This module provides a number of convenient functions to build and parse frame bodies for specific kinds of CQL message. Each should be paired with a call to build_frame or send_frame with the appropriate opcode constant, or invoked after parse_frame or recv_frame has received a frame with the appropriate opcode.

Each build_* function takes as its first argument the CQL protocol version (the value that will be passed to build_frame or send_frame). This value is used to ensure all the correct information is present in the frame body, and that no optional parameters are passed that the chosen version of the protocol cannot support.


$frame = build_startup_frame( $version, options => \%options )

Builds the frame for an OPCODE_STARTUP message. Takes a reference to a hash of named options. These options should include CQL_VERSION.

$frame = build_credentials_frame( $version, credentials => \%credentials )

Builds the frame for an OPCODE_CREDENTIALS message. Takes a reference to a hash of credentials, the exact keys of which will depend on the authenticator returned by the OPCODE_AUTHENTICATE message.

$frame = build_query_frame( $version, cql => $cql, QUERY_PARAMS )

Builds the frame for an OPCODE_QUERY message. Takes the CQL string and the query parameters.

QUERY_PARAMS contains the following keys:

consistency => INT

The consistency level. (required)

values => ARRAY of STRING

The encoded byte values of the bind parameters (optional, v2+ only)

skip_metadata => BOOL

If true, sets the QUERY_SKIP_METADATA flag. (optional, v2+ only)

page_size => INT

The paging size (optional, v2+ only)

paging_state => STRING

The paging state from the previous result to a query or execute. (optional, v2+ only)

serial_consistency => INT

The consistency level for CAS serialisation operations (optional, v2+ only)

$frame = build_prepare_frame( $version, cql => $cql )

Builds the frame for an OPCODE_PREPARE message. Takes the CQL string.

$frame = build_execute_frame( $version, id => $id, QUERY_PARAMS )

Builds the frame for an OPCODE_EXECUTE message. Takes the prepared statement ID, and the query parameters. QUERY_PARAMS is as for build_query_frame, except that the values key is required and permitted even at protocol version 1.

$frame = build_register_frame( $version, events => \@events )

Builds the frame for an OPCODE_REGISTER message. Takes an ARRAY reference of strings giving the event names.

( $err, $message ) = parse_error_frame( $version, $frame )

Parses the frame from an OPCODE_ERROR message. Returns an error code value and a string message.

( $authenticator ) = parse_authenticate_frame( $version, $frame )

Parses the frame from an OPCODE_AUTHENTICATE message. Returns the authenticator name as a string.

( $options ) = parse_supported_frame( $version, $frame )

Parses the frame from an OPCODE_SUPPORTED message. Returns a HASH reference mapping option names to ARRAYs of supported values.

( $type, $result ) = parse_result_frame( $version, $frame )

Parses the frame from an OPCODE_RESULT message. Returns a type value (one of the TYPE_* constants), and a value whose interpretation depends on the type.

If any other type is encountered, $result will be the $frame object itself.

( $event, @args ) = parse_event_frame( $version, $frame )

Parses the frame from an OPCODE_EVENT message. Returns the event name and a list of its arguments; which will vary depending on the event name.

If the event name is unrecognised, @args will return just the $frame object itself.


This code was paid for by


Paul Evans <>

syntax highlighting: