Thread: [poe-commits] SF.net SVN: poe: [1931] trunk/poe/lib/POE.pm
Brought to you by:
rcaputo
From: <rc...@us...> - 2006-04-06 16:21:20
|
Revision: 1931 Author: rcaputo Date: 2006-04-06 09:21:11 -0700 (Thu, 06 Apr 2006) ViewCVS: http://svn.sourceforge.net/poe/?rev=1931&view=rev Log Message: ----------- Now at version 0.34_01 so that cpan test reports from svn aren't confused with the official release. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2006-04-06 16:06:00 UTC (rev 1930) +++ trunk/poe/lib/POE.pm 2006-04-06 16:21:11 UTC (rev 1931) @@ -7,7 +7,7 @@ use Carp qw( croak ); use vars qw($VERSION $REVISION); -$VERSION = '0.34'; +$VERSION = '0.34_01'; $REVISION = do {my($r)=(q$Revision$=~/(\d+)/);sprintf"1.%04d",$r}; sub import { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2006-04-10 22:53:46
|
Revision: 1935 Author: rcaputo Date: 2006-04-10 15:53:42 -0700 (Mon, 10 Apr 2006) ViewCVS: http://svn.sourceforge.net/poe/?rev=1935&view=rev Log Message: ----------- Make 0.3401 official for release. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2006-04-10 22:38:22 UTC (rev 1934) +++ trunk/poe/lib/POE.pm 2006-04-10 22:53:42 UTC (rev 1935) @@ -7,7 +7,7 @@ use Carp qw( croak ); use vars qw($VERSION $REVISION); -$VERSION = '0.34_01'; +$VERSION = '0.3401'; $REVISION = do {my($r)=(q$Revision$=~/(\d+)/);sprintf"1.%04d",$r}; sub import { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2006-04-10 23:36:28
|
Revision: 1937 Author: rcaputo Date: 2006-04-10 16:36:15 -0700 (Mon, 10 Apr 2006) ViewCVS: http://svn.sourceforge.net/poe/?rev=1937&view=rev Log Message: ----------- Next development version. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2006-04-10 22:54:07 UTC (rev 1936) +++ trunk/poe/lib/POE.pm 2006-04-10 23:36:15 UTC (rev 1937) @@ -7,7 +7,7 @@ use Carp qw( croak ); use vars qw($VERSION $REVISION); -$VERSION = '0.3401'; +$VERSION = '0.34_02'; $REVISION = do {my($r)=(q$Revision$=~/(\d+)/);sprintf"1.%04d",$r}; sub import { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2006-05-21 22:16:46
|
Revision: 1959 Author: rcaputo Date: 2006-05-21 15:16:40 -0700 (Sun, 21 May 2006) ViewCVS: http://svn.sourceforge.net/poe/?rev=1959&view=rev Log Message: ----------- Bump the version for release. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2006-05-21 21:12:55 UTC (rev 1958) +++ trunk/poe/lib/POE.pm 2006-05-21 22:16:40 UTC (rev 1959) @@ -7,7 +7,7 @@ use Carp qw( croak ); use vars qw($VERSION $REVISION); -$VERSION = '0.34_02'; +$VERSION = '0.35'; $REVISION = do {my($r)=(q$Revision$=~/(\d+)/);sprintf"1.%04d",$r}; sub import { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2006-05-23 04:41:59
|
Revision: 1964 Author: rcaputo Date: 2006-05-22 21:41:51 -0700 (Mon, 22 May 2006) ViewCVS: http://svn.sourceforge.net/poe/?rev=1964&view=rev Log Message: ----------- Minor release to fix bugs introduced in last major release. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2006-05-22 17:57:36 UTC (rev 1963) +++ trunk/poe/lib/POE.pm 2006-05-23 04:41:51 UTC (rev 1964) @@ -7,7 +7,7 @@ use Carp qw( croak ); use vars qw($VERSION $REVISION); -$VERSION = '0.35'; +$VERSION = '0.3501'; $REVISION = do {my($r)=(q$Revision$=~/(\d+)/);sprintf"1.%04d",$r}; sub import { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2006-06-13 15:06:19
|
Revision: 1985 Author: rcaputo Date: 2006-06-13 08:06:09 -0700 (Tue, 13 Jun 2006) ViewCVS: http://svn.sourceforge.net/poe/?rev=1985&view=rev Log Message: ----------- Attempt to resolve a documentation incongruity, per Tim Otten's report in rt.cpan.org ticket 19122. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2006-06-13 14:55:10 UTC (rev 1984) +++ trunk/poe/lib/POE.pm 2006-06-13 15:06:09 UTC (rev 1985) @@ -132,22 +132,21 @@ consistent interface to other event loops such as Event and the Tk and Gtk toolkits. -POE is written in layers, each building upon the previous. It's +POE is written in layers, each building upon previous ones. It's therefore possible to use POE at varying levels of abstraction. -The lowest level uses POE::Kernel and POE::Session. The former class -acts as POE's event watcher and dispatcher. The latter encapsulates -the notion of an event driven task. +The most basic layer is comprised of POE::Kernel and POE::Session. +The former class acts as POE's event watcher and dispatcher, while the +latter encapsulates the notion of an event driven task. POE::Wheel classes operate at a slightly higher level. They plug into sessions and perform very common, general tasks. For example, -POE::Wheel::ReadWrite performs buffered I/O. +POE::Wheel::ReadWrite performs buffered I/O. Unlike cheese, wheels do +not stand alone. They are customized by POE::Driver and POE::Filter +classes. Using the appropriate filter, a ReadWrite wheel can read and +write streams, lines, fixed-length blocks, HTTP requests and +responses, and so on. -Unlike cheese, wheels do not stand alone. They are customized by -POE::Driver and POE::Filter classes. Using the proper filter, a -ReadWrite wheel can read and write streams, lines, fixed-length -blocks, HTTP requests and responses, and so on. - The highest level of POE programming uses components. They may perform narrowly defined tasks, such as POE::Component::Child (on the CPAN). Often they encapsulate nearly everything necessary for an This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2006-06-15 15:12:36
|
Revision: 1988 Author: rcaputo Date: 2006-06-15 08:12:30 -0700 (Thu, 15 Jun 2006) ViewCVS: http://svn.sourceforge.net/poe/?rev=1988&view=rev Log Message: ----------- Bump the version for release. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2006-06-14 15:33:11 UTC (rev 1987) +++ trunk/poe/lib/POE.pm 2006-06-15 15:12:30 UTC (rev 1988) @@ -7,7 +7,7 @@ use Carp qw( croak ); use vars qw($VERSION $REVISION); -$VERSION = '0.3501'; +$VERSION = '0.3502'; $REVISION = do {my($r)=(q$Revision$=~/(\d+)/);sprintf"1.%04d",$r}; sub import { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2006-08-07 17:17:02
|
Revision: 2034 Author: rcaputo Date: 2006-08-07 10:16:57 -0700 (Mon, 07 Aug 2006) ViewCVS: http://svn.sourceforge.net/poe/?rev=2034&view=rev Log Message: ----------- Time for a new release. 0.36 is on its way out the door. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2006-08-07 05:41:22 UTC (rev 2033) +++ trunk/poe/lib/POE.pm 2006-08-07 17:16:57 UTC (rev 2034) @@ -7,7 +7,7 @@ use Carp qw( croak ); use vars qw($VERSION $REVISION); -$VERSION = '0.3502'; +$VERSION = '0.36'; $REVISION = do {my($r)=(q$Revision$=~/(\d+)/);sprintf"1.%04d",$r}; sub import { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2006-08-13 02:11:43
|
Revision: 2041 Author: rcaputo Date: 2006-08-12 19:11:37 -0700 (Sat, 12 Aug 2006) ViewCVS: http://svn.sourceforge.net/poe/?rev=2041&view=rev Log Message: ----------- Some CPAN testers failures have been addressed. Time for 0.3601. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2006-08-13 00:51:32 UTC (rev 2040) +++ trunk/poe/lib/POE.pm 2006-08-13 02:11:37 UTC (rev 2041) @@ -7,7 +7,7 @@ use Carp qw( croak ); use vars qw($VERSION $REVISION); -$VERSION = '0.36'; +$VERSION = '0.3601'; $REVISION = do {my($r)=(q$Revision$=~/(\d+)/);sprintf"1.%04d",$r}; sub import { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2006-09-08 04:54:57
|
Revision: 2118 http://svn.sourceforge.net/poe/?rev=2118&view=rev Author: rcaputo Date: 2006-09-07 21:54:53 -0700 (Thu, 07 Sep 2006) Log Message: ----------- Version 0.37! Rejoice! Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2006-09-08 04:50:08 UTC (rev 2117) +++ trunk/poe/lib/POE.pm 2006-09-08 04:54:53 UTC (rev 2118) @@ -7,7 +7,7 @@ use Carp qw( croak ); use vars qw($VERSION $REVISION); -$VERSION = '0.3601'; +$VERSION = '0.37'; $REVISION = do {my($r)=(q$Revision$=~/(\d+)/);sprintf"1.%04d",$r}; sub import { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2006-09-19 03:42:05
|
Revision: 2132 http://svn.sourceforge.net/poe/?rev=2132&view=rev Author: rcaputo Date: 2006-09-18 20:41:59 -0700 (Mon, 18 Sep 2006) Log Message: ----------- Time for 0.38. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2006-09-19 03:06:46 UTC (rev 2131) +++ trunk/poe/lib/POE.pm 2006-09-19 03:41:59 UTC (rev 2132) @@ -7,7 +7,7 @@ use Carp qw( croak ); use vars qw($VERSION $REVISION); -$VERSION = '0.37'; +$VERSION = '0.38'; $REVISION = do {my($r)=(q$Revision$=~/(\d+)/);sprintf"1.%04d",$r}; sub import { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2006-10-03 03:13:59
|
Revision: 2141 http://svn.sourceforge.net/poe/?rev=2141&view=rev Author: rcaputo Date: 2006-10-02 20:13:53 -0700 (Mon, 02 Oct 2006) Log Message: ----------- Matt Trout strongly suggests that version numbers should have a consistent number of decimal places so that they are both lexically and numerically monotonic. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2006-10-01 17:10:40 UTC (rev 2140) +++ trunk/poe/lib/POE.pm 2006-10-03 03:13:53 UTC (rev 2141) @@ -7,7 +7,7 @@ use Carp qw( croak ); use vars qw($VERSION $REVISION); -$VERSION = '0.38'; +$VERSION = '0.38'; # NOTE - Should be #.#### (four decimal places) $REVISION = do {my($r)=(q$Revision$=~/(\d+)/);sprintf"1.%04d",$r}; sub import { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2006-11-03 07:20:28
|
Revision: 2151 http://svn.sourceforge.net/poe/?rev=2151&view=rev Author: rcaputo Date: 2006-11-02 23:20:25 -0800 (Thu, 02 Nov 2006) Log Message: ----------- Get ready to rumble. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2006-11-03 07:06:36 UTC (rev 2150) +++ trunk/poe/lib/POE.pm 2006-11-03 07:20:25 UTC (rev 2151) @@ -7,7 +7,7 @@ use Carp qw( croak ); use vars qw($VERSION $REVISION); -$VERSION = '0.38'; # NOTE - Should be #.#### (four decimal places) +$VERSION = '0.9500'; # NOTE - Should be #.#### (four decimal places) $REVISION = do {my($r)=(q$Revision$=~/(\d+)/);sprintf"1.%04d",$r}; sub import { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2007-01-03 07:14:30
|
Revision: 2164 http://svn.sourceforge.net/poe/?rev=2164&view=rev Author: rcaputo Date: 2007-01-02 23:14:30 -0800 (Tue, 02 Jan 2007) Log Message: ----------- Release the hounds! Or at least the code... Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2007-01-03 06:13:16 UTC (rev 2163) +++ trunk/poe/lib/POE.pm 2007-01-03 07:14:30 UTC (rev 2164) @@ -7,7 +7,7 @@ use Carp qw( croak ); use vars qw($VERSION $REVISION); -$VERSION = '0.9500'; # NOTE - Should be #.#### (four decimal places) +$VERSION = '0.9913'; # NOTE - Should be #.#### (four decimal places) $REVISION = do {my($r)=(q$Revision$=~/(\d+)/);sprintf"1.%04d",$r}; sub import { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2007-01-03 17:29:49
|
Revision: 2165 http://svn.sourceforge.net/poe/?rev=2165&view=rev Author: rcaputo Date: 2007-01-03 09:29:46 -0800 (Wed, 03 Jan 2007) Log Message: ----------- Bump the version to test sourceforge's new subversion server. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2007-01-03 07:14:30 UTC (rev 2164) +++ trunk/poe/lib/POE.pm 2007-01-03 17:29:46 UTC (rev 2165) @@ -7,7 +7,7 @@ use Carp qw( croak ); use vars qw($VERSION $REVISION); -$VERSION = '0.9913'; # NOTE - Should be #.#### (four decimal places) +$VERSION = '0.9917'; # NOTE - Should be #.#### (four decimal places) $REVISION = do {my($r)=(q$Revision$=~/(\d+)/);sprintf"1.%04d",$r}; sub import { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2007-03-23 06:16:36
|
Revision: 2183 http://svn.sourceforge.net/poe/?rev=2183&view=rev Author: rcaputo Date: 2007-03-22 23:16:24 -0700 (Thu, 22 Mar 2007) Log Message: ----------- Time for a new release! Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2007-03-23 05:41:58 UTC (rev 2182) +++ trunk/poe/lib/POE.pm 2007-03-23 06:16:24 UTC (rev 2183) @@ -7,7 +7,7 @@ use Carp qw( croak ); use vars qw($VERSION $REVISION); -$VERSION = '0.9917'; # NOTE - Should be #.#### (four decimal places) +$VERSION = '0.9989'; # NOTE - Should be #.#### (four decimal places) $REVISION = do {my($r)=(q$Revision$=~/(\d+)/);sprintf"1.%04d",$r}; sub import { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2007-07-23 07:25:08
|
Revision: 2202 http://svn.sourceforge.net/poe/?rev=2202&view=rev Author: rcaputo Date: 2007-07-23 00:25:09 -0700 (Mon, 23 Jul 2007) Log Message: ----------- Bump up the version. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2007-07-23 07:22:57 UTC (rev 2201) +++ trunk/poe/lib/POE.pm 2007-07-23 07:25:09 UTC (rev 2202) @@ -7,7 +7,7 @@ use Carp qw( croak ); use vars qw($VERSION $REVISION); -$VERSION = '0.9989'; # NOTE - Should be #.#### (four decimal places) +$VERSION = '0.9999'; # NOTE - Should be #.#### (four decimal places) $REVISION = do {my($r)=(q$Revision$=~/(\d+)/);sprintf"1.%04d",$r}; sub import { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2007-08-18 06:26:42
|
Revision: 2218 http://poe.svn.sourceforge.net/poe/?rev=2218&view=rev Author: rcaputo Date: 2007-08-17 23:26:43 -0700 (Fri, 17 Aug 2007) Log Message: ----------- Revise documentation in a major way. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2007-08-13 06:54:50 UTC (rev 2217) +++ trunk/poe/lib/POE.pm 2007-08-18 06:26:43 UTC (rev 2218) @@ -114,172 +114,200 @@ =head1 DESCRIPTION -POE is a framework for cooperative, event driven multitasking in Perl. -Other languages have similar frameworks. Python has Twisted. TCL has -"the event loop". +POE is a framework for cooperative, event driven multitasking and +networking in Perl. Other languages have similar frameworks. Python +has Twisted. TCL has "the event loop". POE originally was developed as the core of a persistent object server -and runtime environment. It has evolved into a general purpose -multitasking and networking framework, encompassing and providing a -consistent interface to other event loops such as Event and the Tk and -Gtk toolkits. +and runtime environment. It has since evolved into something much +more generic and widely useful. -POE is written in layers, each building upon previous ones. It's -therefore possible to use POE at varying levels of abstraction. +POE provides a unified interface for several other event loops, +including select(), IO::Poll, Glib, Gtk, Tk, wx, Gtk2, and so on. +Check CPAN for the full list of POE::Loop modules. -The most basic layer is comprised of POE::Kernel and POE::Session. -The former class acts as POE's event watcher and dispatcher, while the -latter encapsulates the notion of an event driven task. +POE is designed in layers, each building atop the lower level ones. +Programs are free to use POE at any level of abstraction, and +different levels can be mixed and matched seamlessly within a single +program. -POE::Wheel classes operate at a slightly higher level. They plug into -sessions and perform very common, general tasks. For example, -POE::Wheel::ReadWrite performs buffered I/O. Unlike cheese, wheels do -not stand alone. They are customized by POE::Driver and POE::Filter -classes. Using the appropriate filter, a ReadWrite wheel can read and -write streams, lines, fixed-length blocks, HTTP requests and -responses, and so on. +POE's bundled abstraction layers are the tip of a growing iceberg. +Sprocket, POE::Stage, and other CPAN distributions build upon this +work. You're encouraged to look around. -The highest level of POE programming uses components. They may -perform narrowly defined tasks, such as POE::Component::Child (on the -CPAN). Often they encapsulate nearly everything necessary for an -entire program. +No matter how high you go, though, it all boils down to calls to +POE::Kernel. So your down-to-earth code can easily cooperate with +stratospheric systems. -Every level eventually boils down to the lowest common -denominator---POE::Kernel and POE::Session. Because of this, classes -coexist and cooperate at every level of abstraction. +=head2 Layer 1: Kernel and Sessions -=head1 DOCUMENTATION ROADMAP +The lowest public layer is comprised of POE::Kernel, POE::Session, and +other session types. -POE's documentation rewards the methodical reader. Skim everything, -and you should have a pretty good idea of what's available and where -to find it later. +POE::Kernel does most of the heavy lifting. It provides a portable +interface for filehandle activity detection, multiple alarms and other +timers, signal handling, and other less-common features. -You're reading the main POE document. It's the general entry point to -POE's documentation. +POE::Session and derived classes encapsulate the notion of an event +driven task. They also customize event dispatch to a particular +calling convention. POE::NFA, for example, is more of a proper state +machine. CPAN has several other kinds of sessions. -Documentation for POE's basic features is spread across POE::Kernel -and POE::Session in non-intuitive ways. POE turns out to be difficult -to document from either module's perspective, so there is a lot of -overlap and cross-referencing. We have plans to rewrite them, but -that only helps if you want to join in the fun. +=head2 Layer 2: Wheels, Filters, and Drivers -POE::NFA is a second kind of session---a Non-deterministic Finite -Automaton class, which happens to be driven by events. This is an -abstract state machine, which can be either Mealy or Moore (or a -little bit of both, or neither) depending on how it's configured. +POE::Wheel objects are dynamic mix-ins for POE::Session instances. +These "wheels" perform very common, generic tasks in a highly reusable +and customizable way. POE::Wheel::ReadWrite, for example, implements +non-blocking buffered I/O. Nearly everybody needs this, so why +require people to reinvent it all the time? -POE::Wheel, POE::Driver, POE::Filter, and POE::Component describe -entire classes of modules in broad strokes. Where applicable, they -document the features common among their subclasses. This is -confusing, since most people are inclined to read POE::Wheel::Foo and -assume that something doesn't exist if it's not there. +POE::Filter objects customize wheels in a modular way. Filters act as +I/O layers, turning raw streams into structured data, and serializing +structures into something suitable for streams. CPAN also has several +of these. -There are also some helper classes. POE::Pipe is the base class for -POE::Pipe::OneWay and POE::Pipe::TwoWay. They are portable pipe -creation functions, mainly for POE's test suite. POE::Preprocessor, a -macro language implemented as a source filter, has been split off into -its own distribution: Filter::Template. +POE::Driver objects get relatively short shrift because very few are +needed. The most common driver, POE::Driver::SysRW is ubiquitous and +also the default, so most people will never need to specify one. -POE is a relatively large system. It includes internal classes that -allow it to be customized without needing to know too much about the -system as a whole. POE::Queue describes POE's event queue interface. -POE::Loop covers the commonalities of every event loop POE supports. -POE::Resource discusses the notion of system resources, which -correspond to event watchers and generators in other systems. +But drivers are where wheels meet the road. In this case, the road is +some type of file handle. Drivers do the actual reading and writing +in a standard way so wheels don't need to know the difference between +send() and syswrite(). -The SEE ALSO sections of each major module class will list the -subclasses beneath it. This document's SEE ALSO lists every module in -the distribution. +=head2 Layer 3: Components -Finally, there are many POE resources on the web. The CPAN contains a -growing number of POE modules. POE's wiki, at -L<http://poe.perl.org/>, includes tutorials, an extensive set of -examples, documentation, and more. +POE::Component classes are essentially Perl classes that use POE to +perform tasks in a non-blocking or cooperative way. This is a very +broad definition, and POE components are all over the abstraction map. -=head1 COMPATIBILITY ISSUES +Many components, such as POE::Component::Server::SMTP, encapsulate the +generic details of an entire application. Others perform rather +narrow tasks, such as POE::Component::DirWatch::Object. -The developers of POE strive to make it as portable as possible. If -you discover a problem, please e-mail a report to -<bu...@rt...>. If you can, include error messages, C<perl -V> -output, and/or test cases. The more information you can provide, the -quicker we can turn around a fix. Patches are also welcome, of -course. +POE components are often just plain Perl objects. The previously +mentioned POE::Component::DirWatch::Object uses Moose. Other object +and meta-object frameworks are compatible. -POE is known to work on FreeBSD, MacOS X, Linux, Solaris, and other -forms of UNIX. It also works to one extent or another on various -versions of Windows, including 98, ME, NT, 2000, and XP. It should -work on OS/2, although we no longer have a developer who uses it. It -has been reported to work on MacOS 9, of all things. +CPAN's got quite a lot of components. -POE has been tested with Perl versions as far back as 5.004_03 and as -recent as 5.8.3. +=head2 Layer 4 and Beyond: Frameworks and Object Metaphors -Thanks go out to the CPAN testers, who have dedicated resources to -running new modules on a variety of platforms. The latest POE tests -are visible at <http://testers.cpan.org/search?request=dist&dist=POE>. +It's possible to abstract POE entirely behind a different framework. +In fact we encourage people to write domain-specific abstractions that +entirely hide POE if necessary. The nice thing here is that even at +these high levels of abstraction, things will continue to interoperate +all the way down to layer 1. -We try to cover all of POE with our test suite, although we only -succeed in exercising about 70% of its code at any given time. A -coverage report is online at -<http://poe.perl.org/?POE's_test_coverage_report>. +Two examples of ultra-high level abstraction are Sprocket, a +networking framework that does its own thing, and POE::Stage, which is +POE's creator's attempt to formalize and standardize POE components. -Specific issues: +=head2 Layer 0: POE's Internals -=over 2 +POE's layered architecture doesn't stop below the surface. POE's guts +are broken into specific POE::Loop classes for each event loop it +supports. Internals are divided up by type, giving POE::Resource +classes for Aliases, Controls, Events, Extrefs, FileHandles, SIDs, +Sessions, Signals, and Statistics. -=item Various Unices +POE::Kernel's APIs are extensible through POE::API mix-in classes. +Some brave souls have even published new APIs on CPAN, such as +POE::API::Peek (which gives you access to some of the internal +POE::Resource methods). -No known problems. +By design, it's possible to implement new POE::Kernel guts by creating +another POE::Resource class. One can then expose the functionality +with a new POE::API mix-in. -=item OS/2 +=head1 DOCUMENTATION ROADMAP -No known problems. POE has no OS/2 tester as of version 0.1206. +You're reading the main POE documentation. It's the general entry +point to the world of POE. You already know this, however, so let's +talk about something more interesting. -=item Windows +=head2 Basic Features -POE seems to work very nicely with Perl compiled for Cygwin. If you -must use ActiveState Perl, please use the absolute latest version. -ActiveState Perl's compatibility fluctuates from one build to another, -so we only support the most recent build prior to POE's release. +POE's basic features are documented mainly in POE::Kernel and +POE::Session. Methods are documented in the classes that implement +them. Broader concepts are covered in the most appropriate class, and +sometimes they are divided among classes that share in their +implementation. -POE's Windows port is current maintained by Rocco Caputo, but he has -only limited knowledge of Windows development. Please contact Rocco -if you or someone you know would like to accelerate POE's Windows -support. +=head2 @_[KERNEL, HEAP, etc.] -A number of people have helped bring POE's Windows support this far, -through contributions of time, patches, and other resources. Some of -them are: Sean Puckett, Douglas Couch, Andrew Chen, Uhlarik Ondoej, -and Nick Williams. +Event handler calling conventions, that weird C<@_[KERNEL, HEAP]> +stuff, is documented in POE::Session. That's because POE::Session +implements the calling convention, and other session types often do it +differently. -TODO: I'm sure there are others. Find them in the changelog and thank -them here. +=head2 Base Classes Document Common Features -=item MacOS +The POE::Wheel, POE::Driver, POE::Filter, and POE::Component base +clasess describe what's common among each class. It's a good idea to +at least skim the base class documentation since the subclasses tend +not to rehash the common things. -No known problems on MacOS X. +POE::Queue, POE::Resource, POE::Loop, and POE::API document the +concepts and sometimes the standard interfaces behind multiple +subclasess. You're encouraged to have a look. -Mac Classic (versions 9.x and before) was reported to work at one -time, but it seems like a lost cause unless someone would like to step -forward and make it happen. +=head2 Helper Classes -=back +POE includes some helper classes for portability. POE::Pipe, and its +subclasses POE::Pipe::OneWay and POE::Pipe::TwoWay are portable pipes. +=head2 Event Loop Bridges + +POE::Loop documents and specifies the interface for all of POE's event +loop bridges. The individual classes may document specific details, +but generally they adhere to the spec strongly enough that they don't +need to. + +Many of the existing POE::Loop bridges provided in POE's base +distribution will move out to separate distributions shortly. The +documentation will probably remain the same, however. + +=head2 POE::Queue and POE::Queue::Array + +POE's event queue is basically a priority heap implemented as an +ordered array. POE::Queue documents the standard interface for POE +event queues, and POE::Queue::Array implements the ordered array +queue. Tony Cook has released POE::XS::Queue::Array, which is a +drop-in C replacement for POE::Queue::Array. You might give it a try +if you need more performance. POE's event queue is some of the +hottest code in the system. + +=head2 This Section Isn't Complete + +Help organize the documentation. Obviously we can't think of +everything. We're well aware of this and welcome audience +participation. + +=head2 See SEE ALSO + +Wherever possible, the SEE ALSO section will cross-reference one +module to related ones. + +=head2 Don't Forget the Web + +Finally, there are many POE resources on the web. The CPAN contains a +growing number of POE modules. L<http://poe.perl.org/> hosts POE's +wiki, which includes tutorials, an extensive set of examples, +documentation, and more. Plus it's a wiki, so you can trivially pitch +in your two cents. + =head1 SYSTEM REQUIREMENTS -POE's installer will prompt for required and optional modules. It's -important to read the prompts and only install what you will need. -You may always reinstall it later, adding new prerequisites as the -need arises. +POE's basic requirements are rather light. Most are included with +modern versions of Perl, and the rest (if any) should be generally +portable by now. -Time::HiRes is recommended. POE will work without it, but alarms and -other features will be much more accurate with it. +Time::HiRes is recommended, even for older Perls that don't include +it. POE will work without it, but alarms and other features will be +much more accurate if it's included. POE::Kernel will use Time::HiRes +automatically if it's available. -POE relies heavily on constants in the POSIX module. Some of the -constants aren't defined on some platforms. POE works around this as -best it can, but problems occasionally crop up. Please let us know if -you run into problems, and we'll work with you to fix them. - Filter::Reference needs a module to serialize data for transporting it across a network. It will use Storable, FreezeThaw, YAML, or some other package with freeze() and thaw() methods. It can also use @@ -289,45 +317,132 @@ If you want to write web servers, you'll need to install libwww-perl, which requires libnet. This is a small world of modules that includes HTTP::Status, HTTP::Request, HTTP::Date, and HTTP::Response. They are -generally good to have, and recent versions of Perl include them. +generally good to have, and modern versions of Perl even include them. -Programs that use Wheel::Curses require the Curses module, which in -turn requires some sort of curses library. +Programs that use POE::Wheel::Curses require the Curses module, which +in turn requires some sort of curses library. -=head1 SUPPORT RESOURCES +If you're using POE with Tk, you'll need Tk installed. -These are Internet resources where you may find more information about -POE. +And other obvious things. Let us know if we've overlooked a +non-obvious detail. -=over 2 +=head1 COMPATIBILITY ISSUES -=item POE's Mailing List +One of POE's design goals is to be as portable as possible. That's +why it's written in "Plain Perl". XS versions of POE modules are +avaliable as third-party distributions. Parts of POE that require +nonstandard libraries are optional, and not having those libraries +should not prevent POE from installing. -POE has a mailing list where you can discuss it with the community at -large. You can receive subscription information by sending e-mail to: +Despite Chris Williams' efforts, we can't test POE everywhere. Please +see the GETTING HELP section if you run into a problem. - To: poe...@pe... - Subject: (anything will do) +POE is expected to work on most forms of UNIX, including FreeBSD, +MacOS X, Linux, Solaris. Maybe even AIX and QNX, but we're not sure. -The message body is ignored. +POE has also been tested on Windows XP, using the latest version of +ActiveState Perl and Cygwin Perl. Support for the Neopolitan Perls +(Vanilla, Strawberry and Chocolate) is still early, but there should +be no major showstoppers. -=item POE's Web Site +OS/2 and MacOS 9 have been reported to work in the past, but nobody +seems to be testing there anymore. Reports and patches are still +welcome. -POE's web site contains the latest development snapshot along with -examples, tutorials, and other fun stuff. It's at -<http://poe.perl.org/>. +Past versions of POE have been tested with Perl versions as far back +as 5.004_03 and as recent as "blead", today's development build. We +can no longer guarantee each release will work everywhere, but we will +be happy to work with you if you need special support for a really old +system. -=item SourceForge +POE's quality is due in large part to the fine work of Chris Williams +and the other CPAN testers. They have dedicated resources towards +ensuring CPAN distributions pass their own tests, and we watch their +reports religiously. You can, too. The latest POE test reports can +be found at <http://testers.cpan.org/search?request=dist&dist=POE>. -POE is developed at SourceForge. The project is hosted at -http://sourceforge.net/projects/poe/ +Thanks also go out to Benjamin Smith and the 2006 Google Summer of +Code. Ben was awarded a grant to improve POE's test suite, which he +did admirably. +=head2 Windows Issues + +POE seems to work very nicely with Perl compiled for Cygwin. If you +must use ActiveState Perl, please use the absolute latest version. +ActiveState Perl's compatibility fluctuates from one build to another, +so we tend not to support older releases. + +Windows and ActiveState Perl are considered an esoteric platform due +to the complex interactions between various versions. POE therefore +relies on user feedback and support here. + +A number of people have helped bring POE's Windows support this far, +through contributions of time, patches, and other resources. Some of +them are: Sean Puckett, Douglas Couch, Andrew Chen, Uhlarik Ondoej, +Nick Williams, and Chris Williams (no relation). + +=head2 Other Compatibility Issues + +None currently known. See GETTING HELP below if you've run into +something. + +=head1 GETTING HELP + +POE's developers take pride in its quality. If you encounter a +problem, please let us know. + +=head2 POE's Request Tracker + +You're welcome to e-mail questions and bug reports to +<bu...@rt...>. This is not a realtime support channel, +though. If you need a more immediate response, try one of the methods +below. + +=head2 POE's Mailing List + +POE has a dedicated mailing list where developers and users discuss +the software and its use. You're welcome to join us. Send an e-mail +to <poe...@pe...> for subscription instructions. The subject and +message body are ignored. + +=head2 POE's Web Site + +<http://poe.perl.org> contains recent information, tutorials, and +examples. It's also a wiki, so people are invited to share tips and +code snippets there as well. + +=head2 SourceForge + +http://sourceforge.net/projects/poe/ is POE's project page. + +=head2 Internet Relay Chat (IRC) + +irc.perl.org channel #poe is an informal place to waste some time and +maybe even discuss Perl and POE. Consider an SSH relay if your +workplace frowns on IRC. But only if they won't fire you if you're +caught. + +=head2 Personal Support + +Unfortunately we don't have resources to provide free one-on-one +personal support anymore. We'll do it for a fee, though. Send Rocco +an e-mail via his CPAN address. + =back =head1 SEE ALSO +Broken down by abstraction layer. + +TODO - Verify this is complete. + +=head2 Layer 1 + POE::Kernel, POE::Session, POE::NFA +=head2 Layer 2 + POE::Wheel, POE::Wheel::Curses, POE::Wheel::FollowTail, POE::Wheel::ListenAccept, POE::Wheel::ReadLine, POE::Wheel::ReadWrite, POE::Wheel::Run, POE::Wheel::SocketFactory @@ -339,14 +454,16 @@ POE::Filter::RecordBlock, POE::Filter::Reference, POE::Filter::Stackable, POE::Filter::Stream +=head2 Layer 3 + POE::Component, POE::Component::Client::TCP, POE::Component::Server::TCP +=head2 Layer 0 + POE::Loop, POE::Loop::Event, POE::Loop::Gtk, POE::Loop::IO_Poll, POE::Loop::Select, POE::Loop::Tk -POE::Pipe, POE::Pipe::OneWay, POE::Pipe::TwoWay - POE::Queue, POE::Queue::Array POE::Resource, POE::Resource::Aliases, POE::Resource::Events, @@ -354,25 +471,29 @@ POE::Resource::Performance, POE::Resource::SIDs, POE::Resource::Sessions, POE::Resource::Signals +=head2 Helpers + +POE::Pipe, POE::Pipe::OneWay, POE::Pipe::TwoWay + =head1 BUGS -The tests only cover about 70% of POE. +The tests only cover about 70% of POE. Getting higher coverage is +really hard. Bug reports, suggestions, and feedback of all kinds should be e-mailed -to <bu...@rt...>. It will be entered into our request queue -where it will remain until addressed. If your return address is -valid, you will be notified when the status of your request changes. +to <bu...@rt...>. They will be entered into our request queue +and remain there until addressed. If your return address is valid, +you'll be notified when the status of your request changes. -Outstanding issues, including wish list items, are available in POE's +Outstanding issues, including wish list items, are browsable in POE's RT queue at L<http://rt.cpan.org/>. =head1 AUTHORS & COPYRIGHT -POE is the combined effort of several people. Please let us know if -someone is missing from this list. +POE is the combined effort of quite a lot of people. This is an +incomplete list of some early contributors. A more complete list can +be found in POE's change log. -TODO: Scour the CHANGES file for credit where it's due. - =over 2 =item Ann Barcomb @@ -498,7 +619,8 @@ =item Others? -Please contact the author if you've been forgotten. +Please contact the author if you've been forgotten and would like to +be included here. =back @@ -508,9 +630,12 @@ =item Rocco Caputo -Rocco Caputo is <rc...@cp...>. POE is his brainchild. +Rocco Caputo is <rc...@cp...>. POE is his brainchild. He wishes +to thank you for your interest, and he has more thanks than he can +count for all the people who have contributed. POE would not be +nearly as cool without you. -Except where otherwise noted, POE is Copyright 1998-2005 Rocco Caputo. +Except where otherwise noted, POE is Copyright 1998-2007 Rocco Caputo. All rights reserved. POE is free software; you may redistribute it and/or modify it under the same terms as Perl itself. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2007-08-19 05:57:07
|
Revision: 2223 http://poe.svn.sourceforge.net/poe/?rev=2223&view=rev Author: rcaputo Date: 2007-08-18 22:57:08 -0700 (Sat, 18 Aug 2007) Log Message: ----------- Document "use POE" magic. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2007-08-19 05:02:19 UTC (rev 2222) +++ trunk/poe/lib/POE.pm 2007-08-19 05:57:08 UTC (rev 2223) @@ -79,8 +79,7 @@ #!/usr/bin/perl -w use strict; - # Use POE! - use POE; + use POE; # Auto-includes POE::Kernel and POE::Session. sub handler_start { my ($kernel, $heap, $session) = @_[KERNEL, HEAP, SESSION]; @@ -220,6 +219,28 @@ another POE::Resource class. One can then expose the functionality with a new POE::API mix-in. +=head1 USING POE + +POE's C<import> method implements some magic to cut down on the amount +of necessary setup. + +For starters, C<use POE> will automatically include POE::Kernel. And +it will also include POE::Session if a session type isn't specified. +Most programs need both of these modules, so POE gives you them for +free. + +Modules can also be included on the C<use POE> line. The leading +"POE::" should be omitted when using POE this way: + + use POE qw(Component::Client::TCP). + +This is a somewhat abbreviated version of: + + use POE; + use POE::Kernel; + use POE::Session; + use POE::Component::Client::TCP; + =head1 DOCUMENTATION ROADMAP You're reading the main POE documentation. It's the general entry This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2007-08-19 18:16:00
|
Revision: 2225 http://poe.svn.sourceforge.net/poe/?rev=2225&view=rev Author: rcaputo Date: 2007-08-19 11:15:59 -0700 (Sun, 19 Aug 2007) Log Message: ----------- Move the POE.pm use lines to POE::Kernel. Mark that contributors need to be documented. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2007-08-19 13:42:54 UTC (rev 2224) +++ trunk/poe/lib/POE.pm 2007-08-19 18:15:59 UTC (rev 2225) @@ -219,28 +219,6 @@ another POE::Resource class. One can then expose the functionality with a new POE::API mix-in. -=head1 USING POE - -POE's C<import> method implements some magic to cut down on the amount -of necessary setup. - -For starters, C<use POE> will automatically include POE::Kernel. And -it will also include POE::Session if a session type isn't specified. -Most programs need both of these modules, so POE gives you them for -free. - -Modules can also be included on the C<use POE> line. The leading -"POE::" should be omitted when using POE this way: - - use POE qw(Component::Client::TCP). - -This is a somewhat abbreviated version of: - - use POE; - use POE::Kernel; - use POE::Session; - use POE::Component::Client::TCP; - =head1 DOCUMENTATION ROADMAP You're reading the main POE documentation. It's the general entry @@ -255,6 +233,12 @@ sometimes they are divided among classes that share in their implementation. +=head2 Basic Usage + +Basic usage, even for POE.pm, is documented in POE::Kernel. That's +where most of POE's work is done, and POE.pm is little more than a +class loader. + =head2 @_[KERNEL, HEAP, etc.] Event handler calling conventions, that weird C<@_[KERNEL, HEAP]> @@ -643,6 +627,9 @@ Please contact the author if you've been forgotten and would like to be included here. +TODO - This section has fallen into disrepair. A POE historian needs +to cull the CHANGES for the names of major contributors. + =back =head2 Author This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tek...@us...> - 2007-08-20 05:32:36
|
Revision: 2226 http://poe.svn.sourceforge.net/poe/?rev=2226&view=rev Author: teknikill Date: 2007-08-19 22:32:39 -0700 (Sun, 19 Aug 2007) Log Message: ----------- add blurb about myself to the contributers list Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2007-08-19 18:15:59 UTC (rev 2225) +++ trunk/poe/lib/POE.pm 2007-08-20 05:32:39 UTC (rev 2226) @@ -622,6 +622,12 @@ POE::Component::IRC, the widely popular POE-based successor to his wildly popular Net::IRC library. +=item David Davis + +David Davis, aka Xantus is <xa...@cp...>. David contributed patches +to the HTTPD filter, and added CALLER_STATE to POE::Session. He is the +author of L<Sprocket>, a networking framework built on POE. + =item Others? Please contact the author if you've been forgotten and would like to This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gw...@us...> - 2007-12-08 02:27:51
|
Revision: 2257 http://poe.svn.sourceforge.net/poe/?rev=2257&view=rev Author: gwyn17 Date: 2007-12-07 18:27:54 -0800 (Fri, 07 Dec 2007) Log Message: ----------- Mid-sized documenation update Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2007-12-03 06:45:05 UTC (rev 2256) +++ trunk/poe/lib/POE.pm 2007-12-08 02:27:54 UTC (rev 2257) @@ -122,8 +122,9 @@ more generic and widely useful. POE provides a unified interface for several other event loops, -including select(), IO::Poll, Glib, Gtk, Tk, wx, Gtk2, and so on. -Check CPAN for the full list of POE::Loop modules. +including select(), L<IO::Poll>, L<Glib>, L<Gtk>, L<Tk>, L<Wx>, +L<Gtk2>, and so on. +Check the CPAN for the full list of L<POE::Loop> modules. POE is designed in layers, each building atop the lower level ones. Programs are free to use POE at any level of abstraction, and @@ -131,7 +132,7 @@ program. POE's bundled abstraction layers are the tip of a growing iceberg. -Sprocket, POE::Stage, and other CPAN distributions build upon this +L<Sprocket>, L<POE::Stage>, and other CPAN distributions build upon this work. You're encouraged to look around. No matter how high you go, though, it all boils down to calls to @@ -140,17 +141,17 @@ =head2 Layer 1: Kernel and Sessions -The lowest public layer is comprised of POE::Kernel, POE::Session, and +The lowest public layer is comprised of L<POE::Kernel>, L<POE::Session>, and other session types. -POE::Kernel does most of the heavy lifting. It provides a portable +L<POE::Kernel> does most of the heavy lifting. It provides a portable interface for filehandle activity detection, multiple alarms and other timers, signal handling, and other less-common features. -POE::Session and derived classes encapsulate the notion of an event +L<POE::Session> and derived classes encapsulate the notion of an event driven task. They also customize event dispatch to a particular -calling convention. POE::NFA, for example, is more of a proper state -machine. CPAN has several other kinds of sessions. +calling convention. L<POE::NFA>, for example, is more of a proper state +machine. The CPAN has several other kinds of sessions. Everything ultimately builds on these classes or the concepts they implement. If you're short on time, the things to read besides this @@ -160,40 +161,44 @@ POE::Wheel objects are dynamic mix-ins for POE::Session instances. These "wheels" perform very common, generic tasks in a highly reusable -and customizable way. POE::Wheel::ReadWrite, for example, implements +and customizable way. L<POE::Wheel::ReadWrite>, for example, implements non-blocking buffered I/O. Nearly everybody needs this, so why require people to reinvent it all the time? -POE::Filter objects customize wheels in a modular way. Filters act as +L<POE::Filter> objects customize wheels in a modular way. Filters act as I/O layers, turning raw streams into structured data, and serializing -structures into something suitable for streams. CPAN also has several +structures into something suitable for streams. The CPAN also has several of these. -POE::Driver objects get relatively short shrift because very few are -needed. The most common driver, POE::Driver::SysRW is ubiquitous and -also the default, so most people will never need to specify one. - -But drivers are where wheels meet the road. In this case, the road is +Drivers are where the wheels meet the road. In this case, the road is some type of file handle. Drivers do the actual reading and writing in a standard way so wheels don't need to know the difference between send() and syswrite(). +L<POE::Driver> objects get relatively short shrift because very few are +needed. The most common driver, L<POE::Driver::SysRW> is ubiquitous and +also the default, so most people will never need to specify one. + =head2 Layer 3: Components -POE::Component classes are essentially Perl classes that use POE to +L<POE::Component> classes are essentially Perl classes that use POE to perform tasks in a non-blocking or cooperative way. This is a very broad definition, and POE components are all over the abstraction map. -Many components, such as POE::Component::Server::SMTP, encapsulate the +Many components, such as L<POE::Component::Server::SMTP>, encapsulate the generic details of an entire application. Others perform rather -narrow tasks, such as POE::Component::DirWatch::Object. +narrow tasks, such as L<POE::Component::DirWatch::Object>. POE components are often just plain Perl objects. The previously -mentioned POE::Component::DirWatch::Object uses Moose. Other object +mentioned L<POE::Component::DirWatch::Object> uses L<Moose>. Other object and meta-object frameworks are compatible. -CPAN's got quite a lot of components. +Also of interest is L<POE::Component::Generic>, which is allows you to create +a POE component from nearly nearly any blocking module. +There are quite a lot of components on the CPAN. +L<http://search.cpan.org/search?query=poe+component&mode=all> + =head2 Layer 4 and Beyond: Frameworks and Object Metaphors It's possible to abstract POE entirely behind a different framework. @@ -202,26 +207,31 @@ these high levels of abstraction, things will continue to interoperate all the way down to layer 1. -Two examples of ultra-high level abstraction are Sprocket, a -networking framework that does its own thing, and POE::Stage, which is -POE's creator's attempt to formalize and standardize POE components. +Two examples of ultra-high level abstraction are L<Sprocket>, a networking +framework that does its own thing, and L<POE::Stage>, which is POE's +creator's attempt to formalize and standardize POE components. +It is also possible to communicate between POE processes. This is called +IKC, for I<Inter-Kernel Communication>. There are a few IKC components on +the CPAN (L<http://search.cpan.org/search?query=IKC&mode=all>), notably +L<POE::Component::IKC>, L<POE::TIKC> and L<POE::Component::Lightspeed>. + =head2 Layer 0: POE's Internals -POE's layered architecture doesn't stop below the surface. POE's guts -are broken into specific POE::Loop classes for each event loop it -supports. Internals are divided up by type, giving POE::Resource -classes for Aliases, Controls, Events, Extrefs, FileHandles, SIDs, -Sessions, Signals, and Statistics. +POE's layered architecture continues below the surface. POE's guts are +broken into specific L<POE::Loop> classes for each event loop it supports. +Internals are divided up by type, giving L<POE::Resource> classes for +Aliases, Controls, Events, Extrefs, FileHandles, SIDs, Sessions, Signals, +and Statistics. POE::Kernel's APIs are extensible through POE::API mix-in classes. Some brave souls have even published new APIs on CPAN, such as -POE::API::Peek (which gives you access to some of the internal -POE::Resource methods). +L<POE::API::Peek> (which gives you access to some of the internal +L<POE::Resource> methods). -By design, it's possible to implement new POE::Kernel guts by creating -another POE::Resource class. One can then expose the functionality -with a new POE::API mix-in. +By design, it's possible to implement new L<POE::Kernel> guts by creating +another L<POE::Resource> class. One can then expose the functionality with +a new POE::API mix-in. =head1 DOCUMENTATION ROADMAP @@ -231,59 +241,59 @@ =head2 Basic Features -POE's basic features are documented mainly in POE::Kernel and -POE::Session. Methods are documented in the classes that implement +POE's basic features are documented mainly in L<POE::Kernel> and +L<POE::Session>. Methods are documented in the classes that implement them. Broader concepts are covered in the most appropriate class, and sometimes they are divided among classes that share in their implementation. =head2 Basic Usage -Basic usage, even for POE.pm, is documented in POE::Kernel. That's +Basic usage, even for POE.pm, is documented in L<POE::Kernel>. That's where most of POE's work is done, and POE.pm is little more than a class loader. =head2 @_[KERNEL, HEAP, etc.] Event handler calling conventions, that weird C<@_[KERNEL, HEAP]> -stuff, is documented in POE::Session. That's because POE::Session +stuff, is documented in L<POE::Session>. That's because POE::Session implements the calling convention, and other session types often do it differently. =head2 Base Classes Document Common Features -The POE::Wheel, POE::Driver, POE::Filter, and POE::Component base -clasess describe what's common among each class. It's a good idea to -at least skim the base class documentation since the subclasses tend -not to rehash the common things. +The L<POE::Wheel>, L<POE::Driver>, L<POE::Filter>, and L<POE::Component> +base classes describe what's common among each class. It's a good idea to +at least skim the base class documentation since the subclasses tend not to +rehash the common things. -POE::Queue, POE::Resource, POE::Loop, and POE::API document the +L<POE::Queue>, L<POE::Resource>, L<POE::Loop>, and L<POE::API> document the concepts and sometimes the standard interfaces behind multiple subclasess. You're encouraged to have a look. =head2 Helper Classes -POE includes some helper classes for portability. POE::Pipe, and its -subclasses POE::Pipe::OneWay and POE::Pipe::TwoWay are portable pipes. +POE includes some helper classes for portability. L<POE::Pipe>, and its +subclasses L<POE::Pipe::OneWay> and L<POE::Pipe::TwoWay> are portable pipes. =head2 Event Loop Bridges -POE::Loop documents and specifies the interface for all of POE's event +L<POE::Loop> documents and specifies the interface for all of POE's event loop bridges. The individual classes may document specific details, but generally they adhere to the spec strongly enough that they don't need to. -Many of the existing POE::Loop bridges provided in POE's base +Many of the existing L<POE::Loop> bridges provided in POE's base distribution will move out to separate distributions shortly. The documentation will probably remain the same, however. =head2 POE::Queue and POE::Queue::Array POE's event queue is basically a priority heap implemented as an -ordered array. POE::Queue documents the standard interface for POE -event queues, and POE::Queue::Array implements the ordered array -queue. Tony Cook has released POE::XS::Queue::Array, which is a -drop-in C replacement for POE::Queue::Array. You might give it a try +ordered array. L<POE::Queue> documents the standard interface for POE +event queues, and L<POE::Queue::Array> implements the ordered array +queue. Tony Cook has released L<POE::XS::Queue::Array>, which is a +drop-in C replacement for L<POE::Queue::Array>. You might give it a try if you need more performance. POE's event queue is some of the hottest code in the system. @@ -312,26 +322,27 @@ modern versions of Perl, and the rest (if any) should be generally portable by now. -Time::HiRes is recommended, even for older Perls that don't include -it. POE will work without it, but alarms and other features will be -much more accurate if it's included. POE::Kernel will use Time::HiRes +L<Time::HiRes> is highly recommended, even for older Perls that don't +include it. POE will work without it, but alarms and other features will be +much more accurate if it's included. L<POE::Kernel> will use Time::HiRes automatically if it's available. -Filter::Reference needs a module to serialize data for transporting it -across a network. It will use Storable, FreezeThaw, YAML, or some -other package with freeze() and thaw() methods. It can also use -Compress::Zlib to conserve bandwidth and reduce latency over slow -links, but it's not required. +L<POE::Filter::Reference> needs a module to serialize data for transporting +it across a network. It will use L<Storable>, L<FreezeThaw>, L<YAML>, or +some other package with freeze() and thaw() methods. It can also use +L<Compress::Zlib> to conserve bandwidth and reduce latency over slow links, but +it's not required. -If you want to write web servers, you'll need to install libwww-perl, -which requires libnet. This is a small world of modules that includes -HTTP::Status, HTTP::Request, HTTP::Date, and HTTP::Response. They are -generally good to have, and modern versions of Perl even include them. +If you want to write web servers, you'll need to install libwww-perl, which +requires libnet. This is a small world of modules that includes +L<HTTP::Status>, L<HTTP::Request>, L<HTTP::Date>, and L<HTTP::Response>. +They are generally good to have, and modern versions of Perl even include +them. -Programs that use POE::Wheel::Curses require the Curses module, which -in turn requires some sort of curses library. +Programs that use L<POE::Wheel::Curses> will of course require the L<Curses> +module, which in turn requires some sort of curses library. -If you're using POE with Tk, you'll need Tk installed. +If you're using POE with Tk, you'll need L<Tk> installed. And other obvious things. Let us know if we've overlooked a non-obvious detail. @@ -446,41 +457,41 @@ =head2 Layer 1 -POE::Kernel, POE::Session, POE::NFA +L<POE::Kernel>, L<POE::Session>, L<POE::NFA> =head2 Layer 2 -POE::Wheel, POE::Wheel::Curses, POE::Wheel::FollowTail, -POE::Wheel::ListenAccept, POE::Wheel::ReadLine, POE::Wheel::ReadWrite, -POE::Wheel::Run, POE::Wheel::SocketFactory +L<POE::Wheel>, L<POE::Wheel::Curses>, L<POE::Wheel::FollowTail>, +L<POE::Wheel::ListenAccept>, L<POE::Wheel::ReadLine>, L<POE::Wheel::ReadWrite>, +L<POE::Wheel::Run>, L<POE::Wheel::SocketFactory> -POE::Driver, POE::Driver::SysRW +L<POE::Driver>, L<POE::Driver::SysRW> -POE::Filter, POE::Filter::Block, POE::Filter::Grep, -POE::Filter::HTTPD, POE::Filter::Line, POE::Filter::Map, -POE::Filter::RecordBlock, POE::Filter::Reference, -POE::Filter::Stackable, POE::Filter::Stream +L<POE::Filter>, L<POE::Filter::Block>, L<POE::Filter::Grep>, +L<POE::Filter::HTTPD>, L<POE::Filter::Line>, L<POE::Filter::Map>, +L<POE::Filter::RecordBlock>, L<POE::Filter::Reference>, +L<POE::Filter::Stackable>, L<POE::Filter::Stream> =head2 Layer 3 -POE::Component, POE::Component::Client::TCP, -POE::Component::Server::TCP +L<POE::Component>, L<POE::Component::Client::TCP>, +L<POE::Component::Server::TCP> =head2 Layer 0 -POE::Loop, POE::Loop::Event, POE::Loop::Gtk, POE::Loop::IO_Poll, -POE::Loop::Select, POE::Loop::Tk +L<POE::Loop>, L<POE::Loop::Event>, L<POE::Loop::Gtk>, L<POE::Loop::IO_Poll>, +L<POE::Loop::Select>, L<POE::Loop::Tk> -POE::Queue, POE::Queue::Array +L<POE::Queue>, L<POE::Queue::Array> -POE::Resource, POE::Resource::Aliases, POE::Resource::Events, -POE::Resource::Extrefs, POE::Resource::FileHandles, -POE::Resource::Performance, POE::Resource::SIDs, -POE::Resource::Sessions, POE::Resource::Signals +L<POE::Resource>, L<POE::Resource::Aliases>, L<POE::Resource::Events>, +L<POE::Resource::Extrefs>, L<POE::Resource::FileHandles>, +L<POE::Resource::Performance>, L<POE::Resource::SIDs>, +L<POE::Resource::Sessions>, L<POE::Resource::Signals> =head2 Helpers -POE::Pipe, POE::Pipe::OneWay, POE::Pipe::TwoWay +L<POE::Pipe>, L<POE::Pipe::OneWay>, L<POE::Pipe::TwoWay> =head1 BUGS @@ -563,17 +574,16 @@ abstraction to support hot-swappable filters, and he eventually convinced Rocco that unique session and kernel IDs were a good thing. -Philip also enhanced Filter::Reference to support different +Philip also enhanced L<POE::Filter::Reference> to support different serialization methods. He has also improved POE's quality by finding and fixing several bugs. He provided POE a much needed code review around version 0.06. =item Arnar M. Hrafnkelsson -Arnar is <ad...@um...>. Addi tested POE and POE::Component::IRC on -Windows, finding bugs and testing fixes. He appears throughout the -Changes file. He has also written "cpoe", which is a POE-like library -for C. +Arnar is <ad...@um...>. Addi tested POE and L<POE::Component::IRC> on +Windows, finding bugs and testing fixes. He appears throughout the Changes +file. He has also written "cpoe", which is a POE-like library for C. =item Dave Paris @@ -587,11 +597,11 @@ =item Dieter Pearcey -Dieter Pearcey is <di...@bu...>. He goes by -several Japanese nicknames. Dieter's current area of expertise is in -Wheels and Filters. He greatly improved Wheel::FollowTail, and his -Filter contributions include the basic Block filter, as well as -Stackable, RecordBlock, Grep and Map. +Dieter Pearcey is <di...@bu...>. He goes by several +Japanese nicknames. Dieter's current area of expertise is in Wheels and +Filters. He greatly improved L<POE::Wheel::FollowTail>, and his Filter +contributions include the basic Block filter, as well as Stackable, +RecordBlock, Grep and Map. =item Robert Seifer @@ -606,9 +616,9 @@ =item Matt Sergeant -Matt contributed POE::Kernel::Poll, a more efficient way to watch +Matt contributed L<POE::Kernel::Poll>, a more efficient way to watch multiple files than select(). It's since been moved to -POE::Loop::IO_Poll. +L<POE::Loop::IO_Poll>. =item Richard Soderberg @@ -621,13 +631,13 @@ Dennis Taylor is <de...@fu...>. Dennis has been testing, debugging and patching bits here and there, such as Filter::Line which he improved by leaps in 0.1102. He's also the author of -POE::Component::IRC, the widely popular POE-based successor to his -wildly popular Net::IRC library. +L<POE::Component::IRC>, the widely popular POE-based successor to his +wildly popular L<Net::IRC> library. =item David Davis David Davis, aka Xantus is <xa...@cp...>. David contributed patches -to the HTTPD filter, and added CALLER_STATE to POE::Session. He is the +to the HTTPD filter, and added CALLER_STATE to L<POE::Session>. He is the author of L<Sprocket>, a networking framework built on POE. =item Others? This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gw...@us...> - 2007-12-08 12:10:56
|
Revision: 2259 http://poe.svn.sourceforge.net/poe/?rev=2259&view=rev Author: gwyn17 Date: 2007-12-08 04:10:57 -0800 (Sat, 08 Dec 2007) Log Message: ----------- All L<module> to L<module|module> to prevent pod2html outputing 'the module manapge' Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2007-12-08 11:50:48 UTC (rev 2258) +++ trunk/poe/lib/POE.pm 2007-12-08 12:10:57 UTC (rev 2259) @@ -122,9 +122,9 @@ more generic and widely useful. POE provides a unified interface for several other event loops, -including select(), L<IO::Poll>, L<Glib>, L<Gtk>, L<Tk>, L<Wx>, +including select(), L<IO::Poll|IO::Poll>, L<Glib>, L<Gtk>, L<Tk>, L<Wx>, L<Gtk2>, and so on. -Check the CPAN for the full list of L<POE::Loop> modules. +Check the CPAN for the full list of L<POE::Loop|POE::Loop> modules. POE is designed in layers, each building atop the lower level ones. Programs are free to use POE at any level of abstraction, and @@ -132,40 +132,40 @@ program. POE's bundled abstraction layers are the tip of a growing iceberg. -L<Sprocket>, L<POE::Stage>, and other CPAN distributions build upon this +L<Sprocket>, L<POE::Stage|POE::Stage>, and other CPAN distributions build upon this work. You're encouraged to look around. No matter how high you go, though, it all boils down to calls to -POE::Kernel. So your down-to-earth code can easily cooperate with -stratospheric systems. +L<POE::Kernel|POE::Kernel>. So your down-to-earth code can easily cooperate +with stratospheric systems. =head2 Layer 1: Kernel and Sessions -The lowest public layer is comprised of L<POE::Kernel>, L<POE::Session>, and -other session types. +The lowest public layer is comprised of L<POE::Kernel|POE::Kernel>, +L<POE::Session|POE::Session>, and other session types. -L<POE::Kernel> does most of the heavy lifting. It provides a portable +L<POE::Kernel|POE::Kernel> does most of the heavy lifting. It provides a portable interface for filehandle activity detection, multiple alarms and other timers, signal handling, and other less-common features. -L<POE::Session> and derived classes encapsulate the notion of an event +L<POE::Session|POE::Session> and derived classes encapsulate the notion of an event driven task. They also customize event dispatch to a particular -calling convention. L<POE::NFA>, for example, is more of a proper state +calling convention. L<POE::NFA|POE::NFA>, for example, is more of a proper state machine. The CPAN has several other kinds of sessions. Everything ultimately builds on these classes or the concepts they implement. If you're short on time, the things to read besides this -are L<POE::Kernel> and L<POE::Session>. +are L<POE::Kernel|POE::Kernel> and L<POE::Session|POE::Session>. =head2 Layer 2: Wheels, Filters, and Drivers -POE::Wheel objects are dynamic mix-ins for POE::Session instances. -These "wheels" perform very common, generic tasks in a highly reusable -and customizable way. L<POE::Wheel::ReadWrite>, for example, implements -non-blocking buffered I/O. Nearly everybody needs this, so why -require people to reinvent it all the time? +POE::Wheel objects are dynamic mix-ins for POE::Session instances. These +"wheels" perform very common, generic tasks in a highly reusable and +customizable way. L<POE::Wheel::ReadWrite|POE::Wheel::ReadWrite>, for +example, implements non-blocking buffered I/O. Nearly everybody needs this, +so why require people to reinvent it all the time? -L<POE::Filter> objects customize wheels in a modular way. Filters act as +L<POE::Filter|POE::Filter> objects customize wheels in a modular way. Filters act as I/O layers, turning raw streams into structured data, and serializing structures into something suitable for streams. The CPAN also has several of these. @@ -175,25 +175,25 @@ in a standard way so wheels don't need to know the difference between send() and syswrite(). -L<POE::Driver> objects get relatively short shrift because very few are -needed. The most common driver, L<POE::Driver::SysRW> is ubiquitous and +L<POE::Driver|POE::Driver> objects get relatively short shrift because very few are +needed. The most common driver, L<POE::Driver::SysRW|POE::Driver::SysRW> is ubiquitous and also the default, so most people will never need to specify one. =head2 Layer 3: Components -L<POE::Component> classes are essentially Perl classes that use POE to +L<POE::Component|POE::Component> classes are essentially Perl classes that use POE to perform tasks in a non-blocking or cooperative way. This is a very broad definition, and POE components are all over the abstraction map. -Many components, such as L<POE::Component::Server::SMTP>, encapsulate the +Many components, such as L<POE::Component::Server::SMTP|POE::Component::Server::SMTP>, encapsulate the generic details of an entire application. Others perform rather -narrow tasks, such as L<POE::Component::DirWatch::Object>. +narrow tasks, such as L<POE::Component::DirWatch::Object|POE::Component::DirWatch::Object>. POE components are often just plain Perl objects. The previously -mentioned L<POE::Component::DirWatch::Object> uses L<Moose>. Other object +mentioned L<POE::Component::DirWatch::Object|POE::Component::DirWatch::Object> uses L<Moose|Moose>. Other object and meta-object frameworks are compatible. -Also of interest is L<POE::Component::Generic>, which is allows you to create +Also of interest is L<POE::Component::Generic|POE::Component::Generic>, which is allows you to create a POE component from nearly nearly any blocking module. There are quite a lot of components on the CPAN. @@ -208,29 +208,29 @@ all the way down to layer 1. Two examples of ultra-high level abstraction are L<Sprocket>, a networking -framework that does its own thing, and L<POE::Stage>, which is POE's +framework that does its own thing, and L<POE::Stage|POE::Stage>, which is POE's creator's attempt to formalize and standardize POE components. It is also possible to communicate between POE processes. This is called IKC, for I<Inter-Kernel Communication>. There are a few IKC components on the CPAN (L<http://search.cpan.org/search?query=IKC&mode=all>), notably -L<POE::Component::IKC>, L<POE::TIKC> and L<POE::Component::Lightspeed>. +L<POE::Component::IKC|POE::Component::IKC> and L<POE::TIKC|POE::TIKC>. =head2 Layer 0: POE's Internals POE's layered architecture continues below the surface. POE's guts are -broken into specific L<POE::Loop> classes for each event loop it supports. -Internals are divided up by type, giving L<POE::Resource> classes for +broken into specific L<POE::Loop|POE::Loop> classes for each event loop it supports. +Internals are divided up by type, giving L<POE::Resource|POE::Resource> classes for Aliases, Controls, Events, Extrefs, FileHandles, SIDs, Sessions, Signals, and Statistics. POE::Kernel's APIs are extensible through POE::API mix-in classes. Some brave souls have even published new APIs on CPAN, such as -L<POE::API::Peek> (which gives you access to some of the internal -L<POE::Resource> methods). +L<POE::API::Peek|POE::API::Peek> (which gives you access to some of the internal +L<POE::Resource|POE::Resource> methods). -By design, it's possible to implement new L<POE::Kernel> guts by creating -another L<POE::Resource> class. One can then expose the functionality with +By design, it's possible to implement new L<POE::Kernel|POE::Kernel> guts by creating +another L<POE::Resource|POE::Resource> class. One can then expose the functionality with a new POE::API mix-in. =head1 DOCUMENTATION ROADMAP @@ -241,59 +241,60 @@ =head2 Basic Features -POE's basic features are documented mainly in L<POE::Kernel> and -L<POE::Session>. Methods are documented in the classes that implement +POE's basic features are documented mainly in L<POE::Kernel|POE::Kernel> and +L<POE::Session|POE::Session>. Methods are documented in the classes that implement them. Broader concepts are covered in the most appropriate class, and sometimes they are divided among classes that share in their implementation. =head2 Basic Usage -Basic usage, even for POE.pm, is documented in L<POE::Kernel>. That's +Basic usage, even for POE.pm, is documented in L<POE::Kernel|POE::Kernel>. That's where most of POE's work is done, and POE.pm is little more than a class loader. =head2 @_[KERNEL, HEAP, etc.] Event handler calling conventions, that weird C<@_[KERNEL, HEAP]> -stuff, is documented in L<POE::Session>. That's because POE::Session +stuff, is documented in L<POE::Session|POE::Session>. That's because POE::Session implements the calling convention, and other session types often do it differently. =head2 Base Classes Document Common Features -The L<POE::Wheel>, L<POE::Driver>, L<POE::Filter>, and L<POE::Component> -base classes describe what's common among each class. It's a good idea to -at least skim the base class documentation since the subclasses tend not to +The L<POE::Wheel|POE::Wheel>, L<POE::Driver|POE::Driver>, +L<POE::Filter|POE::Filter>, and L<POE::Component|POE::Component> base +classes describe what's common among each class. It's a good idea to at +least skim the base class documentation since the subclasses tend not to rehash the common things. -L<POE::Queue>, L<POE::Resource>, L<POE::Loop>, and L<POE::API> document the +L<POE::Queue|POE::Queue>, L<POE::Resource|POE::Resource>, L<POE::Loop|POE::Loop>, and L<POE::API|POE::API> document the concepts and sometimes the standard interfaces behind multiple subclasess. You're encouraged to have a look. =head2 Helper Classes -POE includes some helper classes for portability. L<POE::Pipe>, and its -subclasses L<POE::Pipe::OneWay> and L<POE::Pipe::TwoWay> are portable pipes. +POE includes some helper classes for portability. L<POE::Pipe|POE::Pipe>, and its +subclasses L<POE::Pipe::OneWay|POE::Pipe::OneWay> and L<POE::Pipe::TwoWay|POE::Pipe::TwoWay> are portable pipes. =head2 Event Loop Bridges -L<POE::Loop> documents and specifies the interface for all of POE's event +L<POE::Loop|POE::Loop> documents and specifies the interface for all of POE's event loop bridges. The individual classes may document specific details, but generally they adhere to the spec strongly enough that they don't need to. -Many of the existing L<POE::Loop> bridges provided in POE's base +Many of the existing L<POE::Loop|POE::Loop> bridges provided in POE's base distribution will move out to separate distributions shortly. The documentation will probably remain the same, however. =head2 POE::Queue and POE::Queue::Array POE's event queue is basically a priority heap implemented as an -ordered array. L<POE::Queue> documents the standard interface for POE -event queues, and L<POE::Queue::Array> implements the ordered array -queue. Tony Cook has released L<POE::XS::Queue::Array>, which is a -drop-in C replacement for L<POE::Queue::Array>. You might give it a try +ordered array. L<POE::Queue|POE::Queue> documents the standard interface for POE +event queues, and L<POE::Queue::Array|POE::Queue::Array> implements the ordered array +queue. Tony Cook has released L<POE::XS::Queue::Array|POE::XS::Queue::Array>, which is a +drop-in C replacement for L<POE::Queue::Array|POE::Queue::Array>. You might give it a try if you need more performance. POE's event queue is some of the hottest code in the system. @@ -322,25 +323,26 @@ modern versions of Perl, and the rest (if any) should be generally portable by now. -L<Time::HiRes> is highly recommended, even for older Perls that don't +L<Time::HiRes|Time::HiRes> is highly recommended, even for older Perls that don't include it. POE will work without it, but alarms and other features will be -much more accurate if it's included. L<POE::Kernel> will use Time::HiRes +much more accurate if it's included. L<POE::Kernel|POE::Kernel> will use Time::HiRes automatically if it's available. -L<POE::Filter::Reference> needs a module to serialize data for transporting -it across a network. It will use L<Storable>, L<FreezeThaw>, L<YAML>, or +L<POE::Filter::Reference|POE::Filter::Reference> needs a module to serialize data for transporting +it across a network. It will use L<Storable|Storable>, L<FreezeThaw|FreezeThaw>, L<YAML|YAML>, or some other package with freeze() and thaw() methods. It can also use -L<Compress::Zlib> to conserve bandwidth and reduce latency over slow links, but +L<Compress::Zlib|Compress::Zlib> to conserve bandwidth and reduce latency over slow links, but it's not required. If you want to write web servers, you'll need to install libwww-perl, which requires libnet. This is a small world of modules that includes -L<HTTP::Status>, L<HTTP::Request>, L<HTTP::Date>, and L<HTTP::Response>. -They are generally good to have, and modern versions of Perl even include -them. +L<HTTP::Status|HTTP::Status>, L<HTTP::Request|HTTP::Request>, +L<HTTP::Date|HTTP::Date>, and L<HTTP::Response|HTTP::Response>. They are +generally good to have, and modern versions of Perl even include them. -Programs that use L<POE::Wheel::Curses> will of course require the L<Curses> -module, which in turn requires some sort of curses library. +Programs that use L<POE::Wheel::Curses|POE::Wheel::Curses> will of course +require the L<Curses> module, which in turn requires some sort of +curses library. If you're using POE with Tk, you'll need L<Tk> installed. @@ -574,14 +576,14 @@ abstraction to support hot-swappable filters, and he eventually convinced Rocco that unique session and kernel IDs were a good thing. -Philip also enhanced L<POE::Filter::Reference> to support different -serialization methods. He has also improved POE's quality by finding -and fixing several bugs. He provided POE a much needed code review -around version 0.06. +Philip also enhanced L<POE::Filter::Reference|POE::Filter::Reference> to +support different serialization methods. He has also improved POE's quality +by finding and fixing several bugs. He provided POE a much needed code +review around version 0.06. =item Arnar M. Hrafnkelsson -Arnar is <ad...@um...>. Addi tested POE and L<POE::Component::IRC> on +Arnar is <ad...@um...>. Addi tested POE and L<POE::Component::IRC|POE::Component::IRC> on Windows, finding bugs and testing fixes. He appears throughout the Changes file. He has also written "cpoe", which is a POE-like library for C. @@ -599,7 +601,7 @@ Dieter Pearcey is <di...@bu...>. He goes by several Japanese nicknames. Dieter's current area of expertise is in Wheels and -Filters. He greatly improved L<POE::Wheel::FollowTail>, and his Filter +Filters. He greatly improved L<POE::Wheel::FollowTail|POE::Wheel::FollowTail>, and his Filter contributions include the basic Block filter, as well as Stackable, RecordBlock, Grep and Map. @@ -616,9 +618,9 @@ =item Matt Sergeant -Matt contributed L<POE::Kernel::Poll>, a more efficient way to watch +Matt contributed L<POE::Kernel::Poll|POE::Kernel::Poll>, a more efficient way to watch multiple files than select(). It's since been moved to -L<POE::Loop::IO_Poll>. +L<POE::Loop::IO_Poll|POE::Loop::IO_Poll>. =item Richard Soderberg @@ -631,13 +633,13 @@ Dennis Taylor is <de...@fu...>. Dennis has been testing, debugging and patching bits here and there, such as Filter::Line which he improved by leaps in 0.1102. He's also the author of -L<POE::Component::IRC>, the widely popular POE-based successor to his -wildly popular L<Net::IRC> library. +L<POE::Component::IRC|POE::Component::IRC>, the widely popular POE-based successor to his +wildly popular L<Net::IRC|Net::IRC> library. =item David Davis David Davis, aka Xantus is <xa...@cp...>. David contributed patches -to the HTTPD filter, and added CALLER_STATE to L<POE::Session>. He is the +to the HTTPD filter, and added CALLER_STATE to L<POE::Session|POE::Session>. He is the author of L<Sprocket>, a networking framework built on POE. =item Others? This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2008-03-10 07:02:25
|
Revision: 2282 http://poe.svn.sourceforge.net/poe/?rev=2282&view=rev Author: rcaputo Date: 2008-03-10 00:02:30 -0700 (Mon, 10 Mar 2008) Log Message: ----------- Add a reference to POE's subversion repository, per Zoffix's suggestion. Resolves rt.cpan.org #33835. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2008-03-10 06:33:00 UTC (rev 2281) +++ trunk/poe/lib/POE.pm 2008-03-10 07:02:30 UTC (rev 2282) @@ -434,6 +434,13 @@ examples. It's also a wiki, so people are invited to share tips and code snippets there as well. +=head2 POE's Source Code + +The following command will fetch the most current version of POE into +the "poe" subdirectory: + + svn co https://poe.svn.sourceforge.net/svnroot/poe poe + =head2 SourceForge http://sourceforge.net/projects/poe/ is POE's project page. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rc...@us...> - 2008-03-14 18:55:10
|
Revision: 2288 http://poe.svn.sourceforge.net/poe/?rev=2288&view=rev Author: rcaputo Date: 2008-03-14 11:55:13 -0700 (Fri, 14 Mar 2008) Log Message: ----------- Packaging up a release for the testers. Modified Paths: -------------- trunk/poe/lib/POE.pm Modified: trunk/poe/lib/POE.pm =================================================================== --- trunk/poe/lib/POE.pm 2008-03-10 19:59:47 UTC (rev 2287) +++ trunk/poe/lib/POE.pm 2008-03-14 18:55:13 UTC (rev 2288) @@ -7,7 +7,7 @@ use Carp qw( croak ); use vars qw($VERSION $REVISION); -$VERSION = '0.9999'; # NOTE - Should be #.#### (four decimal places) +$VERSION = '0.9999_01'; # NOTE - Should be #.#### (four decimal places) $REVISION = do {my($r)=(q$Revision$=~/(\d+)/);sprintf"1.%04d",$r}; sub import { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |