"Net::Async::CassandraCQL::Connection" - connect to a single Cassandra
A registered event occurred. @args will depend on the event name. Each is also
available as its own event, with the name in lowercase. If the event is not
one of the types recognised below, @args will contain the actual
The cluster topology has changed. $node is a packed socket address.
The node's status has changed. $node is a packed socket address.
A keyspace or table schema has changed.
The following named parameters may be passed to "new" or
- username => STRING
- password => STRING
- Optional. Authentication details to use for
- cql_version => INT
- Optional. Version of the CQL wire protocol to negotiate during connection.
Defaults to 1.
Returns the connection's node ID (the string form of its IP address), which is
used as its ID in the "system.peers" table.
Connects to the Cassandra node an send the "OPCODE_STARTUP" message.
The returned Future will yield the connection itself on success.
Takes the following named arguments:
- host => STRING
- service => STRING
Sends a message with the given opcode and Protocol::CassandraCQL::Frame for the
message body. The returned Future will yield the response opcode, frame and
version number (with the RESPONSE bit masked off).
This is a low-level method; applications should instead use one of the wrapper
Sends the initial connection setup message. On success, the returned Future
Normally this is not required as the "connect" method performs it
Requests the list of supported options from the server node. On success, the
returned Future yields a HASH reference mapping option names to ARRAY
references containing valid values.
Performs a CQL query. On success, the values returned from the Future will
depend on the type of query.
For "USE" queries, the type is "keyspace" and $result is a
string giving the name of the new keyspace.
For "CREATE", "ALTER" and "DROP" queries, the type
is "schema_change" and $result is a 3-element ARRAY reference
containing the type of change, the keyspace and the table name.
For "SELECT" queries, the type is "rows" and $result is an
instance of Protocol::CassandraCQL::Result containing the returned row data.
For other queries, such as "INSERT", "UPDATE" and
"DELETE", the future returns nothing.
Any other arguments will be passed on to the underlying
"build_query_frame" function of Protocol::CassandraCQL::Frames.
Prepares a CQL query for later execution. On success, the returned Future yields
an instance of Net::Async::CassandraCQL::Query.
Executes a previously-prepared statement, given its ID and the binding data. On
success, the returned Future will yield results of the same form as the
"query" method. $data should contain a list of encoded byte-string
values. Any other arguments will be passed on to the underlying
"build_execute_frame" function of Protocol::CassandraCQL::Frames.
Normally this method is not directly required - instead, use the
"execute" method on the query object itself, as this will encode the
Registers the connection's interest in receiving events of the types given in
the ARRAY reference. Event names may be "TOPOLOGY_CHANGE",
"STATUS_CHANGE" or "SCHEMA_CHANGE". On success, the
returned Future yields nothing.
If the connection is idle (has no outstanding queries), then it is closed
immediately. If not, it is put into close-pending mode, where it will accept
no more queries, and will close when the last pending one is complete.
Returns a future which will eventually yield the (closed) connection when it
This code was paid for by
- Perceptyx <http://www.perceptyx.com/>
- Shadowcat Systems <http://www.shadow.cat>
Paul Evans <email@example.com>