ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-FCP/FCP.pm
(Generate patch)

Comparing AnyEvent-FCP/FCP.pm (file contents):
Revision 1.22 by root, Sun Jun 12 04:38:56 2016 UTC vs.
Revision 1.27 by root, Wed Jun 15 11:18:25 2016 UTC

18=head1 DESCRIPTION 18=head1 DESCRIPTION
19 19
20This module implements the freenet client protocol version 2.0, as used by 20This module implements the freenet client protocol version 2.0, as used by
21freenet 0.7. See L<Net::FCP> for the earlier freenet 0.5 version. 21freenet 0.7. See L<Net::FCP> for the earlier freenet 0.5 version.
22 22
23See L<http://wiki.freenetproject.org/FreenetFCPSpec2Point0> for a 23See L<https://wiki.freenetproject.org/FCP> for a description of what the
24description of what the messages do. 24messages do.
25 25
26The module uses L<AnyEvent> to find a suitable event module. 26The module uses L<AnyEvent> to find a suitable event module.
27 27
28Only very little is implemented, ask if you need more, and look at the 28Only very little is implemented, ask if you need more, and look at the
29example program later in this section. 29example program later in this section.
136=item on_error => $callback->($fcp, $message) 136=item on_error => $callback->($fcp, $message)
137 137
138Invoked on any (fatal) errors, such as unexpected connection close. The 138Invoked on any (fatal) errors, such as unexpected connection close. The
139callback receives the FCP object and a textual error message. 139callback receives the FCP object and a textual error message.
140 140
141=item on_failure => $callback->($fcp, $type, $backtrace, $args, $error) 141=item on_failure => $callback->($fcp, $type, $args, $backtrace, $error)
142 142
143Invoked when an FCP request fails that didn't have a failure callback. See 143Invoked when an FCP request fails that didn't have a failure callback. See
144L<FCP REQUESTS> for details. 144L<FCP REQUESTS> for details.
145 145
146=back 146=back
444call site. 444call site.
445 445
446This is a popular choice, but it makes handling errors hard - make sure 446This is a popular choice, but it makes handling errors hard - make sure
447you never generate protocol errors! 447you never generate protocol errors!
448 448
449If an C<on_failure> hook exists, it will be invoked with the FCP object, 449In the failure case, if an C<on_failure> hook exists, it will be invoked
450the request type (the name of the method), a (textual) backtrace as 450with the FCP object, the request type (the name of the method, an arrayref
451generated by C<Carp::longmess>, and arrayref containing the arguments from 451containing the arguments from the original request invocation, a (textual)
452the original request invocation and the error object from the server, in 452backtrace as generated by C<Carp::longmess>, and the error object from the
453this order, e.g.: 453server, in this order, e.g.:
454 454
455 on_failure => sub { 455 on_failure => sub {
456 my ($fcp, $request_type, $backtrace, $orig_args, $error_object) = @_; 456 my ($fcp, $request_type, $orig_args, $backtrace, $error_object) = @_;
457 457
458 warn "FCP failure ($type), $error_object->{code_description} ($error_object->{extra_description})$backtrace"; 458 warn "FCP failure ($type @$args), $error_object->{code_description} ($error_object->{extra_description})$backtrace";
459 exit 1; 459 exit 1;
460 }, 460 },
461 461
462=item A condvar (as returned by e.g. C<< AnyEvent->condvar >>) 462=item A condvar (as returned by e.g. C<< AnyEvent->condvar >>)
463 463
737 }); 737 });
738}; 738};
739 739
740=item $status = $fcp->remove_request ($identifier[, $global]) 740=item $status = $fcp->remove_request ($identifier[, $global])
741 741
742Remove the request with the given isdentifier. Returns true if successful, 742Remove the request with the given identifier. Returns true if successful,
743false on error. 743false on error.
744 744
745=cut 745=cut
746 746
747_txn remove_request => sub { 747_txn remove_request => sub {
792 792
793C<$want_read> and C<$want_write> should be set to a true value when you 793C<$want_read> and C<$want_write> should be set to a true value when you
794want to read (get) files or write (put) files, respectively. 794want to read (get) files or write (put) files, respectively.
795 795
796On error, an exception is thrown. Otherwise, C<$can_read> and 796On error, an exception is thrown. Otherwise, C<$can_read> and
797C<$can_write> indicate whether you can reaqd or write to freenet via the 797C<$can_write> indicate whether you can read or write to freenet via the
798directory. 798directory.
799 799
800=cut 800=cut
801 801
802_txn test_dda => sub { 802_txn test_dda => sub {
923on every change, which will be called as C<< $cb->($fcp, $kv, $type) >>, where C<$type> 923on every change, which will be called as C<< $cb->($fcp, $kv, $type) >>, where C<$type>
924is the type of the original message triggering the change, 924is the type of the original message triggering the change,
925 925
926To fill this cache with the global queue and keep it updated, 926To fill this cache with the global queue and keep it updated,
927call C<watch_global> to subscribe to updates, followed by 927call C<watch_global> to subscribe to updates, followed by
928C<list_persistent_requests_sync>. 928C<list_persistent_requests>.
929 929
930 $fcp->watch_global_sync_; # do not wait 930 $fcp->watch_global_; # do not wait
931 $fcp->list_persistent_requests; # wait 931 $fcp->list_persistent_requests; # wait
932 932
933To get a better idea of what is stored in the cache, here is an example of 933To get a better idea of what is stored in the cache, here is an example of
934what might be stored in C<< $fcp->{req}{"Frost-gpl.txt"} >>: 934what might be stored in C<< $fcp->{req}{"Frost-gpl.txt"} >>:
935 935
1044 if 0.1 > rand; 1044 if 0.1 > rand;
1045 } 1045 }
1046 } 1046 }
1047 1047
1048 # see if the dummy plugin is loaded, to ensure all previous requests have finished. 1048 # see if the dummy plugin is loaded, to ensure all previous requests have finished.
1049 $fcp->get_plugin_info_sync ("dummy"); 1049 $fcp->get_plugin_info ("dummy");
1050 1050
1051=head1 SEE ALSO 1051=head1 SEE ALSO
1052 1052
1053L<http://wiki.freenetproject.org/FreenetFCPSpec2Point0>, L<Net::FCP>. 1053L<http://wiki.freenetproject.org/FreenetFCPSpec2Point0>, L<Net::FCP>.
1054 1054

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines