Apache-HTTunnel

 view release on metacpan or  search on metacpan

Client/lib/HTTunnel/Client.pod  view on Meta::CPAN


Asks the C<Apache::HTTunnel> server to read up to C<LEN> bytes from
the established remote connection. An exception is thrown if an error occurs.

When trying to read, C<HTTunnel::Client> will establish an HTTP connection
to the C<Apache::HTTunnel> server asking that C<LEN> bytes be read. If no 
data is available after C<TIMEOUT> seconds (the default value is 15 seconds),
the HTTP connection is closed by the server and the C<read> method will establish
a new one. This will go on until some data or EOF is returned.

Therefore C<read> will return only when some (or no more) data is available
to be read (like the regular L<read>).

C<LIFELINE> can be any valid filehandle from which one can read. If used, 
C<read> will interrupt its connection loop and execute  C<LIFELINE_CUT_ACTION> 
when data (or EOF) is available to be read from C<LIFELINE>. It will then
return undef.

C<LIFELINE_CUT_ACTION> wust be a CODE ref. The default value is 

  sub {die("lifeline cut\n")}

These features can be used if you want fork and to start a process that 
does nothing but reads and returns the data via a pipe. You can then use 
a second pipe to make sure the reader process terminates when the master 
process terminates.

Here is an example:

  my $lifeline = new IO::Pipe() ;
  my $reader = new IO::Pipe() ;
  my $pid = fork() ;
  if ($pid){
    $reader->reader() ;
    $lifeline->writer() ;
	
    # Read data from $reader...
  }
  else {
    $reader->writer() ;
    $reader->autoflush(1) ;
    $lifeline->reader() ;

    while (1){
      my $data = $hc->read(1024, 15, $lifeline, sub {exit()}) ;
      exit() unless defined($data) ;
      print $reader $data ;
    }
  }


=item close ( )

Asks the C<Apache::HTTunnel> server to close a previously established 
connection.

=item get_peer_info ( )

The C<get_peer_info> method returns information about the remote connection.
A string containing the IP address and port number, separated by a colon (:) 
is returned. This method can be useful with UDP connections to validate the 
sender of each packet.

=item request_callback ( REQUEST )

The C<request_callback> method is a callback method that can be used to 
access the C<HTTP::Request> object just before it is sent. The default 
implementation does nothing.

=item response_callback ( RESPONSE )

The C<response_callback> method is a callback method that can be used to 
access the C<HTTP::Response> object just after it is received. The default 
implementation does nothing.

=back


=head1 JAVA CLIENT

For those who might be interested, there is a Java version of 
L<HTTunnel::Client> included in the distribution. The API is
the basically the same.


=head1 BUGS

I'm sure there are some in there :)


=head1 SEE ALSO

L<LWP::UserAgent>


=head1 AUTHOR

Patrick LeBoutillier, E<lt>patl@cpan.orgE<gt>


=head1 COPYRIGHT AND LICENSE

Copyright 2005 by Patrick LeBoutillier

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself. 

=cut



( run in 1.855 second using v1.01-cache-2.11-cpan-39bf76dae61 )