Help-Site Computer Manuals
Software
Hardware
Programming
Networking
  Algorithms & Data Structures   Programming Languages   Revision Control
  Protocols
  Cameras   Computers   Displays   Keyboards & Mice   Motherboards   Networking   Printers & Scanners   Storage
  Windows   Linux & Unix   Mac

RPC::Lite
A lightweight yet flexible framework for remote process communication.

RPC::Lite - A lightweight yet flexible framework for remote process communication.



NAME

RPC::Lite - A lightweight yet flexible framework for remote process communication.


DESCRIPTION

RPC::Lite is intended to be a lightweight, easy-to-use yet flexible and powerful RPC implementation. It was inspired by the headaches of working with other, heavier RPC APIs.

RPC::Lite does not require versioning or signatures but provides facilities to enable them. RPC::Lite is developed under the assumption that for most RPC tasks, the programmer is intimately familiar with both the client and server side of the application and that it is unlikely that clients and servers will have APIs change underneath them without the programmer being aware.

With the above assumptions, it becomes easier to develop simple (or even not-so-simple) RPC services and clients without jumping through the many hoops other RPC implementation require for even the most trivial implementations.

RPC::Lite also supports threading if the Thread::Pool module is available. See RPC::Lite::Threading for more information.


EXAMPLES


  ##############################################

  # Client

  use strict;

  use RPC::Lite::Client;

  # this will create a client object that will try to connect to

  # 192.168.0.3:10000 via TCP and use the JSON serializer.

  my $client = RPC::Lite::Client->new(

    {

      Transport  => 'TCP:Host=192.168.0.3,Port=10000',

      Serializer => 'JSON',

    }

  );

  # print out the results of a call to the system.GetSignatures method

  print "GetSingatures: ";

  print Dumper( $client->Request('system.GetSignatures') );

  print "\n";

  # print out the results of calling system.GetSignature( 'add' )

  print "GetSignature(add): ";

  print $client->Request('system.GetSignature', 'add');

  print "\n";

  # ask the server to add two values together and 

  # return the result, $result = 3

  my $val1   = 1;

  my $val2   = 2;

  my $result = $client->Request( 'add', $val1, $val2 );

  # $result == 3

  ###############################################

  # Server

  use strict;

  use RPC::Lite::Server;

  my $threaded = $ARGV[0] eq '-t' ? 1 : 0;

  my $server = TestServer->new(

    {

      Transports  => [ 'TCP:ListenPort=10000,LocalAddr=localhost' ],

      Threaded    => $threaded,

    }

  );

  $server->Loop;

  ###########################

  package TestServer;

  use base qw(RPC::Lite::Server);

  # Initialize is called by the base RPC::Lite::Server class

  # You should put any initialization you want your server

  # implementation to do in this function.  This function is

  # not necessary, it's only called if you've implemented it.

  # As an example, we add a signature for the 'add' method: it

  # returns an int, and takes two ints as arguments.

  sub Initialize

  {

    my $self = shift;

    $self->AddSignature('add=int:int,int'); # signatures are optional

  }

  # do the addition and return the result

  sub add

  {

    my ( $server, $value1, $value2 ) = @_;

    return $value1 + $value2;

  }


AUTHORS


  Andrew Burke (aburke@bitflood.org)

  Jeremy Muhlich (jmuhlich@bitflood.org)


SEE ALSO

RPC::Lite::Client, RPC::Lite::Server




=cut

1;

Programminig
Wy
Wy
yW
Wy
Programming
Wy
Wy
Wy
Wy