---
name: "Frontier::Responder"
section: "3pm"
platform: "linux"
package: "libfrontier-rpc-perl"
version: "0.07b4-7.1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Frontier::Responder"
---

# Frontier::Responder(3pm)

Create XML-RPC listeners for normal CGI processes

## NAME

Frontier::Responder - Create XML-RPC listeners for normal CGI processes

## SYNOPSIS

```
 use Frontier::Responder;
 my $res = Frontier::Responder->new( methods => {
                                                 add => sub{ $_[0] + $_[1] },
                                                 cat => sub{ $_[0] . $_[1] },
                                                },
                                    );
 print $res->answer;
```

## DESCRIPTION

Use *Frontier::Responder* whenever you need to create an XML-RPC listener using a standard CGI interface. To be effective, a script using this class will often have to be put a directory from which a web server is authorized  to execute CGI programs. An XML-RPC listener using this library will be  implementing the API of a particular XML-RPC application. Each remote  procedure listed in the API of the user defined application will correspond to a hash key that is defined in the `"new"` method of a *Frontier::Responder* object. This is exactly the way *Frontier::Daemon* works as well.  In order to process the request and get the response, the `"answer"` method is needed. Its return value is XML ready for printing.

For those new to XML-RPC, here is a brief description of this protocol.  XML-RPC is a way to execute functions on a different  machine. Both the client's request and listeners response are wrapped  up in XML and sent over HTTP. Because the XML-RPC conversation is in  XML, the implementation languages of the server (here called a *listener*),  and the client can be different. This can be a powerful and simple way to have very different platforms work together without acrimony. Implicit  in the use of XML-RPC is a contract or API that an XML-RPC listener  implements and an XML-RPC client calls. The API needs to list not only  the various procedures that can be called, but also the XML-RPC datatypes expected for input and output. Remember that although Perl is permissive about datatyping, other languages are not. Unforuntately, the XML-RPC spec doesn't say how to document the API. It is recommended that the author of a Perl XML-RPC listener should at least use POD to explain the API. This allows for the programmatic generation of a clean web page.

## METHODS

- new( *OPTIONS* )

  This is the class constructor. As is traditional, it returns  a blessed reference to a *Frontier::Responder* object. It expects  arguments to be given like a hash (Perl's named parameter mechanism).  To be effective, populate the `"methods"` parameter with a hashref  that has API procedure names as keys and subroutine references as  values. See the SYNOPSIS for a sample usage.

- **answer()**

  In order to parse the request and execute the procedure, this method must be called. It returns a XML string that contains the procedure's  response. In a typical CGI program, this string will simply be printed to STDOUT.

## SEE ALSO

[**perl**(1)](/perl/1.md), **Frontier::RPC2**(3)

\<http://www.scripting.com/frontier5/xml/code/rpc.html\>

## AUTHOR

Ken MacLeod \<ken@bitsko.slc.ut.us\> wrote the underlying RPC library.

Joe Johnston \<jjohn@cs.umb.edu\> wrote an adaptation of the Frontier::Daemon class to create this CGI XML-RPC  listener class.
