NAME

Protocol::Memcached::Client - memcached client binary protocol implementation

VERSION

version 0.003

SYNOPSIS

 package Subclass::Of::Protocol::Memcached;
 use parent qw(Protocol::Memcached::Client);

 sub write { $_[0]->{socket}->write($_[1]) }

 package main;
 my $mc = Subclass::Of::Protocol::Memcached->new;
 my ($k, $v) = ('hello' => 'world');
 $mc->set(
 	$k => $v,
	on_complete	=> sub {
 		$mc->get(
 			'key',
			on_complete	=> sub { my $v = shift; print "Had $v\n" },
			on_error	=> sub { die "Failed because of @_\n" }
 		);
	}
 );

DESCRIPTION

Bare minimum protocol support for memcached. This class is transport-agnostic and as such is not a working implementation - you need to subclass and provide your own ->write method.

If you're using this class, you're most likely doing it wrong - head over to the "SEE ALSO" section to rectify this.

SUBCLASSING

Provide the following method:

write

This will be called with the data to be written, and zero or more named parameters:

  • on_flush - coderef to execute when the data has left the building, if this is not supported by the transport layer then the subclass should call the coderef before returning

and when you have data, call "on_read".

METHODS

get

Retrieves a value from memcached.

Takes a key and zero or more optional named parameters:

  • on_write - called when we've sent the request to the server

set

Retrieves a value from memcached.

Takes a key and zero or more optional named parameters:

  • on_write - called when we've sent the request to the server

init

on_read

This should be called when there is data to be processed. It takes a single parameter: a reference to a buffer containing the incoming data. If a packet is processed successfully then it will be removed from this buffer (via substr or s// ).

Returns true if a packet was found, false if not. It is recommended (but not required) that this method be called repeatedly until it returns false.

AUTHOR

Tom Molesworth <cpan@entitymodel.com>

LICENSE

Copyright Tom Molesworth 2011. Licensed under the same terms as Perl itself.