NAME
Event::RPC::Loop - Mainloop Abstraction layer for Event::RPC
SYNOPSIS
use Event::RPC::Server;
use Event::RPC::Loop::Glib;
my $server = Event::RPC::Server->new (
...
loop => Event::RPC::Loop::Glib->new(),
...
);
$server->start;
DESCRIPTION
This modules defines the interface of Event::RPC's mainloop abstraction layer. It's a virtual class all mainloop modules should inherit from.
INTERFACE
The following methods need to be implemented:
- $loop->enter ()
-
Enter resp. start a mainloop.
- $loop->leave ()
-
Leave the mainloop, which was started with the enter() method.
- $watcher = $loop->add_io_watcher ( %options )
-
Add an I/O watcher. Options are passed as a hash of key/value pairs. The following options are known:
- fh
-
The filehandle to be watched.
- cb
-
This callback is called, without any parameters, if an event occured on the filehandle above.
- desc
-
A description of the watcher. Not necessarily implemented by all modules, so it may be ignored.
- poll
-
Either 'r', if your program reads from the filehandle, or 'w' if it writes to it.
A watcher object is returned. What this exactly is depends on the implementation, so you can't do anything useful with it besides passing it back to del_io_watcher().
- $loop->del_io_watcher ( $watcher )
-
Deletes an I/O watcher which was added with $loop->add_io_watcher().
- $timer = $loop->add_timer ( %options )
-
This sets a timer, a subroutine called after a specific timeout or on a regularly basis with a fixed time interval.
Options are passed as a hash of key/value pairs. The following options are known:
- interval
-
A time interval in seconds, may be fractional.
- after
-
Callback is called once after this amount of seconds, may be fractional.
- cb
-
The callback.
- desc
-
A description of the timer. Not necessarily implemented by all modules, so it may be ignored.
A timer object is returned. What this exactly is depends on the implementation, so you can't do anything useful with it besides passing it back to del_io_timer().
- $loop->del_timer ( $timer )
-
Deletes a timer which was added with $loop->add_timer().
DIRECT USAGE IN YOUR SERVER
You may use the methods of Event::RPC::Loop by yourself if you like. This way your program keeps independent of the actual mainloop module in use, if the simplified interface of Event::RPC::Loop is sufficient for you.
In your server program you access the actual mainloop object this way:
my $loop = Event::RPC::Server->instance->get_loop;
Naturally nothing speaks against making your program to work only with a specific mainloop implementation, if you need its features. In that case you may use the corresponding API directly (e.g. of Event or Glib), no need to access it through Event::RPC::Loop.
AUTHORS
Jörn Reder <joern at zyn dot de>
COPYRIGHT AND LICENSE
Copyright 2002-2006 by Jörn Reder.
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.
You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 155:
Non-ASCII character seen before =encoding in 'Jörn'. Assuming CP1252