nt::JSONRPC::Lite;
use strict;
use warnings;
use base 'Exporter';
our $VERSION = '0.15';
our @EXPORT = qw/jsonrpc_client jsonrpc_server/;
use AnyEvent::JSONRPC::Lite::Client;
use AnyEvent::JSONRPC:
:Lite::Server;
sub jsonrpc_client($$) {
my ($host, $port) = @_;
AnyEvent::JSONRPC::Lite::Client->new(
host => $host,
port => $port,
);
}
sub jsonrpc_server($$) {
my
nt::JSONRPC::Lite::Server->new(
address => $address,
port => $port,
);
}
1;
__END__
=encoding utf-8
=for stopwords TCP TCP-based JSONRPC RPC
=head1 NAME
AnyEvent::JSONRPC:
package AnyEvent::JSONRPC::Lite::Server;
use Any::Moose;
use Carp;
use Scalar::Util 'weaken';
use AnyEvent::Handle;
use AnyEvent::Socket;
use AnyEvent::JSONRPC::Lite::CondVar;
has address => (
fh => $fh,
);
$handle->on_read(sub {
shift->unshift_read( json => sub {
$self->_dispatch($indicator, @_);
}),
});
$
$type = shift;
my $result = @_ > 1 ? \@_ : $_[0];
$handle->push_write( json => {
id => $id,
result => $type eq 'result' ? $result : undef
package AnyEvent::JSONRPC::Lite::Client;
use Any::Moose;
use Carp;
use Scalar::Util 'weaken';
use AnyEvent;
use AnyEvent::Socket;
use AnyEvent::Handle;
has host => (
is => 'ro',
isa
ead(json => sub {
$self->_handle_response( $_[1] );
});
});
while (my $pooled = shift @{ $self->_request_pool }) {
$handle->push_write( json =>
params => \@params,
};
if ($self->handler) {
$self->handler->push_write( json => $request );
}
else {
push @{ $self->_request_pool }, $request;
}
$sel