Tyler MacDonald > CGI-JSONRPC > CGI::JSONRPC::Session::Dispatcher

Download:
CGI-JSONRPC-0.11.tar.gz

Annotate this POD

View/Report Bugs
Source  

NAME ^

CGI::JSONRPC::Session::Dispatcher - Dispatch JSONRPC requests to persistant objects

SYNOPSIS ^

package Hello; use CGI::JSONRPC::Session::Obj; use base qw(CGI::JSONRPC::Session::Obj);

sub hi { return $self{count}++; }

DESCRIPTION ^

Apache2::JSONRPC::Dispatcher::Session receives JSONRPC class method calls and translates them into perl object method calls. Here's how it works:

FUNCTION ^

AUTOLOAD($my_class, $id, $desired_class, @args)

When any function is called in Apache2::JSONRPC::Dispatcher::Session, the AUTOLOAD sub runs.

  • $desired_class has all of it's dots (.) converted to double-colons (::) to translate JavaScript class names into perl.
  • The jsonrpc_new method in the resulting class is called with $id passed in as the first argument. An object should be returned from jsonrpc_new in your code.
  • The returned object has the desired method invoked, with any remaining arguments to AUTOLOAD passed in.

If jsonrpc_new does not exist in the requested package, a fatal error will occur. This both provides you with a handy state mechanism, and ensures that packages that aren't supposed to be accessed from the web aren't.

Apache2::JSONRPC attempts to call dispatchers with this set of arguments, and then takes any return values, serializes them to JSON, and sends a response back to the client.

AUTHOR ^

Tyler "Crackerjack" MacDonald <japh@crackerjack.net> and David Labatte <buggyd@justanotherperlhacker.com>

LICENSE ^

Copyright 2006 Tyler "Crackerjack" MacDonald <japh@crackerjack.net>

This is free software; You may distribute it under the same terms as perl itself.

SEE ALSO ^

The "examples/httpd.conf" file bundled with the distribution shows how to create a new JSONRPC::Dispatcher-compatible class, and also shows a rather hacky method for making an existing class accessable from JSON.

Apache2::JSONRPC

syntax highlighting: