|
NAMEAnyEvent::MPRPC::Client - Simple TCP-based MessagePack RPC clientSYNOPSISuse AnyEvent::MPRPC::Client; my $client = AnyEvent::MPRPC::Client->new( host => '127.0.0.1', port => 4423, ); # blocking interface my $res = $client->call( echo => 'foo bar' )->recv; # => 'foo bar'; # non-blocking interface $client->call( echo => 'foo bar' )->cb(sub { my $res = $_[0]->recv; # => 'foo bar'; }); DESCRIPTIONThis module is client part of AnyEvent::MPRPC.AnyEvent condvarsThe main thing you have to remember is that all the data retrieval methods return an AnyEvent condvar, $cv. If you want the actual data from the request, there are a few things you can do.You may have noticed that many of the examples in the SYNOPSIS call "recv" on the condvar. You're allowed to do this under 2 circumstances:
If you're not using Coro, and you don't want your whole program to block, what you should do is call "cb" on the condvar, and give it a coderef to execute when the results come back. The coderef will be given a condvar as a parameter, and it can call "recv" on it to get the data. The final example in the SYNOPSIS gives a brief example of this. Also note that "recv" will throw an exception if the request fails, so be prepared to catch exceptions where appropriate. Please read the AnyEvent documentation for more information on the proper use of condvars. METHODSnew (%options)Create new client object and return it.my $client = AnyEvent::MRPPC::Client->new( host => '127.0.0.1', port => 4423, %options, ); Available options are:
call ($method, (@params | \@params))Call remote method named $method with parameters @params. And return condvar object for response.my $cv = $client->call( echo => 'Hello!' ); my $res = $cv->recv; If server returns an error, "<$cv-"recv>> causes croak by using "<$cv-"croak>>. So you can handle this like following: my $res; eval { $res = $cv->recv }; if (my $error = $@) { # ... } AUTHORTokuhiro Matsuno <tokuhirom@cpan.org>COPYRIGHT AND LICENSECopyright (c) 2009 by tokuhirom.This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of the license can be found in the LICENSE file included with this module.
Visit the GSP FreeBSD Man Page Interface. |