NAME

perfSONAR_PS::RequestHandler - A module that provides an object to register event and message handlers for a perfSONAR Service.

DESCRIPTION

This module is used by the daemon in the pS-PS Daemon architecture. The daemon creates a Handler object and passes it to each of the modules who, in turn, register which message types or event types they are interested in.

API

new This function allocates a new Handler object.

registerMergeHandler ($self, $messageType, \@eventTypes, $service) Registers a handler that will be used to merge two metadata where at least one of the metadata contains one of the event types specified in the passed in eventTypes array. The service element must implement the 'mergeMetadata' function.

registerEventEquivalence Allows registration of equivalent eventTypes. This is a necessary step in merging to find out whether two metadata elements with differing eventTypes can be merged.

registerFullMessageHandler($self, $messageType, $service) This function is used by a pS service to specify that it would like to handle the complete processing for messages of the specified type. If called, the service must have a handleMessage function. This function will be called when a message of the specified type is received. The handleMessage function is then responsible for all handling of the message.

registerMessageHandler($self, $messageType, $service) This function is used by a pS service to specify that it would like to be informed of all the metadata/data pairs for a given message. The handler will also inform the module when a new message of the specified type is received as well as when it has finished processing for the message. If a message handler is registered, the following functions must be defined in the $service specified: handleMessageBegin, handleMessageEnd and handleEvent. handleMessageBegin will be called when a new message of the specified type is received. handleEvent will be called each time a metadata/data pair is found in the message. handleMessageEnd will be called when all the metadata/data pairs have been handled.

registerEventHandler($self, $messageType, $eventType, $service) This function is used to tell which events a pS service is interested in. If added, there must be a 'handleEvent' function defined in the service module. The 'handleEvent' function in the specified service will be called for each metadata/data pair with an event type of the specified type found in a message of the specified type.

registerEventHandler_Regex($self, $messageType, $eventRegex, $service) This function is used to tell which events a pS service is interested in. If added, there must be a 'handleEvent' function defined in the service module. The 'handleEvent' function in the specified service will be called for each metadata/data pair with an event type matching the specified regular expression found in a message of the specified type.

__handleMessage ($self, $doc, $messageType, $message, $request); The __handleMessage function is called when a message is encountered that has a full message handler.

__handleMessageBegin ($self, $ret_message, $messageId, $messageType, $msgParams, $request); The __handleMessageBegin function is called when a new message is encountered that has a message handler.

__handleMessageEnd ($self, $ret_message, $messageId, $messageType); The __handleMessageEnd function is called when all the metadata/data pairs in a message have been handled.

handleEvent ($self, $doc, $messageId, $messageType, $message_parameters, $eventType, $md, $d, $raw_request); The handleEvent function is called when a metadata/data pair is found in a message. $doc contains the response document that being constructed. $messageId contains the identifier for the message. $messageType contains the type of the message. $message_parameters is a reference to a hash containing the message parameters. $eventType contains the event type (if it exists). $md contains the metadata. $d contains the data. $raw_request contains the raw request element.

isValidMessageType($self, $messageType); The isValidMessageType function can be used to check if a specific message type can be handled by either a full message handler, a message handler or an event type handler for events in that type of message. It returns 0 if it's invalid and non-zero if it's valid.

isValidEventType($self, $messageType, $eventType); The isValidEventType function can be used to check if a specific event type found in a specific message type can be handled. It returns 0 if it's invalid and non-zero if it's valid.

hasFullMessageHandler($self, $messageType); The hasFullMessageHandler checks if there is a full message handler for the specified message type.

hasMessageHandler($self, $messageType); The hasMessageHandler checks if there is a message handler for the specified message type.

handleRequest($self, $raw_request); The handleRequest function takes a perfSONAR_PS::Request element containing an incoming SOAP request and handles that request by parsing it, checking the message type, and either calling a full message handler, or iterating through the message calling the handler for each event type. This function sets the response for the request.

parseChains ($self, $output, $message) This function parses the message and constructs an array containing a list of chains. If a chain cannot be resolved, an error message is added to the output document for that metadata/data pair. If no chains are found, an error is thrown.

SEE ALSO

Log::Log4perl, perfSONAR_PS::XML::Document_file perfSONAR_PS::Common, perfSONAR_PS::Messages

To join the 'perfSONAR-PS' mailing list, please visit:

https://mail.internet2.edu/wws/info/i2-perfsonar

The perfSONAR-PS subversion repository is located at:

https://svn.internet2.edu/svn/perfSONAR-PS

Questions and comments can be directed to the author, or the mailing list. Bugs, feature requests, and improvements can be directed here:

https://bugs.internet2.edu/jira/browse/PSPS

VERSION

$Id:$

AUTHOR

Aaron Brown, aaron@internet2.edu, Jason Zurawski, zurawski@internet2.edu

LICENSE

You should have received a copy of the Internet2 Intellectual Property Framework along with this software. If not, see <http://www.internet2.edu/membership/ip.html>

COPYRIGHT

Copyright (c) 2004-2008, Internet2 and the University of Delaware

All rights reserved.