NAME
JSON::RPC2::AnyEvent::Server::Handle - dispatch JSON-RPC requests comming from file-handle to JSON::RPC2::AnyEvent::Server
SYNOPSIS
use AnyEvent::Socket;
use JSON::RPC2::AnyEvent::Server::Handle; # Add `dispatch_fh' method in JSON::RPC2::AnyEvent::Server
my $srv = JSON::RPC2::AnyEvent::Server->(
echo => sub{
my ($cv, $args) = @_;
$cv->send($args);
}
);
my $w = tcp_server undef, 8080, sub {
my ($fh, $host, $port) = @_;
my $hdl = $srv->dispatch_fh($fh); # equivalent to JSON::RPC2::AnyEvent::Server::Handle->new($srv, $fh)
$hdl->on_end(sub{
my $h = shift; # JSON::RPC2::AnyEvent::Server::Handle
# underlying fh is already closed here
$h->destroy;
undef $hdl;
});
$hdl->on_error(sub{
my ($h, $fatal, $message) = @_;
warn $message;
$h->destroy if $fatal;
undef $hdl;
});
};
DESCRIPTION
JSON::RPC2::AnyEvent::Server::Handle is AnyEvent::Handle adapter for JSON::RPC2::AnyEvent::Server.
INTERFACE
CLASS->new($srv, $fh)
-> $handle
$srv->dispatch_fh($fh)
-> $handle
Connect $fh
to $srv
and returns a JSON::RPC2::AnyEvent::Handle object. The object dispatches coming requests to $srv
and sends back returned response to $fh
.
This module adds dispatch_fh
method in JSON::RPC2::AnyEvent::Server, which can be used as a shortcut of new
.
$srv
: JSON::RPC2::AnyEvent::Server-
JSON::RPC2::AnyEvent::Server object to connect.
$fh
: AnyEvent::Handle or file-handle-
File handle to be connected.
$handle
: JSON::RPC2::AnyEvent::Server::Handle-
New JSON::RPC2::AnyEvent::Server::Handle object.
$self->on_end(sub{ my($self) = @_; ... })
Registers callback called when the underlying file handle successfully reaches EOF.
$self->on_error(sub{ my($self, $fatal, $message) = @_; ... })
Registers callback called when an error occurs during comminication.
$self->destroy
Manually destroys this object.
LICENSE
Copyright (C) Daisuke (yet another) Maki.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR
Daisuke (yet another) Maki <maki.daisuke@gmail.com>