
PApp::Application - a class representing a single mountable application

use PApp::Application; # you don't normally use this class directly

This class is the base class for all mountable PApp applications.
Parse the package (including all subpackages) and store the configuration and code data in the PApp Package Cache(tm) for use by load_config and load_code.
Do necessary bookkeeping to mount an application.
Called to upgrade an applicaiton.
Distributes the event to all subpackages/submodules.
Make sure the application is loaded (i.e. in-memory)
Just like PApp::surl and PApp::slink, except that it also jumps into the application (i.e. it switches applications). surl will act as if you were in the main module of the application.
Check dependencies and unload application if any dependencies have changed.
Register an additional file (for dependency tracking and i18n scanning). There should never be a need to use this function. Example:
$papp->register_file("/etc/issue", lang => "en", domain => "mydomain");
Return a hash of path => { info... } pairs delivering information about all files of the application. If include-imports is true, also includes all files form imports.
"Run" the application, i.e. find the current package & module and execute it.
This method is called when a surl callback dies ($callback true) or another exception is caught by papp ($callback false).This method is free to call abort_to or other functions. If it returns, the exception will be ignored.
The default implementation just rethrows.
Creates a new PApp::Package that belongs to this application.
Run a sub for all packages in a papp.
There is another Application type, Agni, which allows you to directly mount a specific agni object. To do this, you have to specify the application path like this:
PApp::Application::Agni/path/gid
e.g., to mount the admin application in root/agni/, use this:
PApp::Application::Agni/root/agni/4295054263
The Agni-specific version of this method calls the uncaught_exception method of the mounted application.

PApp.

Marc Lehmann <schmorp@schmorp.de> http://home.schmorp.de/