Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 649 lines (465 sloc) 22.172 kb
96ceb8b Rocco Caputo Initial revision
authored
1 # $Id$
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
2 # Copyrights and documentation are after __END__.
96ceb8b Rocco Caputo Initial revision
authored
3
4 package POE;
5
6 use strict;
ea6d5ca This patch is the beginning of RT#1692, hopefully I got them all, help m...
Larwan Berke authored
7 use Carp qw( croak );
372c3a1 Rocco Caputo Tweaking to get Makefile.PL working correctly.
authored
8
4dfde7b Rocco Caputo Ok. So I'm braindead from staring into SOAP modules all day. I
authored
9 use vars qw($VERSION $REVISION);
960f312 Rocco Caputo Bump up the version.
authored
10 $VERSION = '0.9999'; # NOTE - Should be #.#### (four decimal places)
cd2db72 Rocco Caputo Change the VERSION strings from cvs style to subversion.
authored
11 $REVISION = do {my($r)=(q$Revision$=~/(\d+)/);sprintf"1.%04d",$r};
4cdc9c6 Rocco Caputo macros, optimizations, comments. a lot of changes.
authored
12
372c3a1 Rocco Caputo Tweaking to get Makefile.PL working correctly.
authored
13 sub import {
14 my $self = shift;
6f253c6 Rocco Caputo Optimized POE::Preprocessor a bit, and added POE::NFA
authored
15
5d1b97a Remove the POE::Loop modules from the modules that need to be loaded
Martijn van Beers authored
16 my @loops = grep(/^Loop\:\:/, @_);
6f253c6 Rocco Caputo Optimized POE::Preprocessor a bit, and added POE::NFA
authored
17 my @sessions = grep(/^(Session|NFA)$/, @_);
5d1b97a Remove the POE::Loop modules from the modules that need to be loaded
Martijn van Beers authored
18 my @modules = grep(!/^(Kernel|Session|NFA|Loop)$/, @_);
6f253c6 Rocco Caputo Optimized POE::Preprocessor a bit, and added POE::NFA
authored
19
5d1b97a Remove the POE::Loop modules from the modules that need to be loaded
Martijn van Beers authored
20 croak "can't use multiple event loops at once"
21 if (@loops > 1);
500fb10 Rocco Caputo add new tescase for POE::NFA
authored
22 croak "POE::Session and POE::NFA export conflicting constants"
6f253c6 Rocco Caputo Optimized POE::Preprocessor a bit, and added POE::NFA
authored
23 if grep(/^(Session|NFA)$/, @sessions) > 1;
24
25 # If a session was specified, use that. Otherwise use Session.
26 if (@sessions) {
27 unshift @modules, @sessions;
28 }
29 else {
30 unshift @modules, 'Session';
31 }
372c3a1 Rocco Caputo Tweaking to get Makefile.PL working correctly.
authored
32
cb72f14 Rocco Caputo Applying a patch by Martijn van Beers. This change adds syntax for
authored
33 my $package = caller();
34 my @failed;
35
36 # Load POE::Kernel in the caller's package. This is separate
37 # because we need to push POE::Loop classes through POE::Kernel's
38 # import().
39
40 {
41 my $loop = "";
42 if (@loops) {
5d1b97a Remove the POE::Loop modules from the modules that need to be loaded
Martijn van Beers authored
43 $loop = "{ loop => '" . shift (@loops) . "' }";
cb72f14 Rocco Caputo Applying a patch by Martijn van Beers. This change adds syntax for
authored
44 }
45 my $code = "package $package; use POE::Kernel $loop;";
46 # warn $code;
47 eval $code;
48 if ($@) {
49 warn $@;
50 push @failed, "Kernel"
e5bc354 Rocco Caputo Instrument some code in POE's import, especially the code for explicit
authored
51 }
cb72f14 Rocco Caputo Applying a patch by Martijn van Beers. This change adds syntax for
authored
52 }
8ae8b71 Rocco Caputo Propagate the POE::Kernel TRACE and ASSERT constants into any other
authored
53
cb72f14 Rocco Caputo Applying a patch by Martijn van Beers. This change adds syntax for
authored
54 # Load all the others.
8429c0a Rocco Caputo forward module exports to the package using POE directly
authored
55
372c3a1 Rocco Caputo Tweaking to get Makefile.PL working correctly.
authored
56 foreach my $module (@modules) {
8429c0a Rocco Caputo forward module exports to the package using POE directly
authored
57 my $code = "package $package; use POE::$module;";
cb72f14 Rocco Caputo Applying a patch by Martijn van Beers. This change adds syntax for
authored
58 # warn $code;
8429c0a Rocco Caputo forward module exports to the package using POE directly
authored
59 eval($code);
60 if ($@) {
babfbeb Rocco Caputo propagate error messages from modules to user
authored
61 warn $@;
62 push(@failed, $module);
63 }
372c3a1 Rocco Caputo Tweaking to get Makefile.PL working correctly.
authored
64 }
65
66 @failed and croak "could not import qw(" . join(' ', @failed) . ")";
67 }
96ceb8b Rocco Caputo Initial revision
authored
68
69 1;
4cdc9c6 Rocco Caputo macros, optimizations, comments. a lot of changes.
authored
70
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
71 __END__
72
73 =head1 NAME
74
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
75 POE - portable multitasking and networking framework for Perl
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
76
77 =head1 SYNOPSIS
78
d8788af Rocco Caputo Big documentation rewrite
authored
79 #!/usr/bin/perl -w
80 use strict;
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
81
d8788af Rocco Caputo Big documentation rewrite
authored
82 # Use POE!
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
83 use POE;
6f47304 Rocco Caputo clean up POD and whitespace
authored
84
f77c574 Rocco Caputo revised documentation
authored
85 sub handler_start {
d8788af Rocco Caputo Big documentation rewrite
authored
86 my ($kernel, $heap, $session) = @_[KERNEL, HEAP, SESSION];
87 print "Session ", $session->ID, " has started.\n";
88 $heap->{count} = 0;
89 $kernel->yield('increment');
90 }
91
f77c574 Rocco Caputo revised documentation
authored
92 sub handler_increment {
d8788af Rocco Caputo Big documentation rewrite
authored
93 my ($kernel, $heap, $session) = @_[KERNEL, HEAP, SESSION];
94 print "Session ", $session->ID, " counted to ", ++$heap->{count}, ".\n";
95 $kernel->yield('increment') if $heap->{count} < 10;
96 }
97
f77c574 Rocco Caputo revised documentation
authored
98 sub handler_stop {
d8788af Rocco Caputo Big documentation rewrite
authored
99 print "Session ", $_[SESSION]->ID, " has stopped.\n";
100 }
101
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
102 for (1..10) {
d8788af Rocco Caputo Big documentation rewrite
authored
103 POE::Session->create(
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
104 inline_states => {
105 _start => \&handler_start,
106 increment => \&handler_increment,
107 _stop => \&handler_stop,
108 }
d8788af Rocco Caputo Big documentation rewrite
authored
109 );
110 }
111
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
112 POE::Kernel->run();
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
113 exit;
114
333ddb3 Rocco Caputo document other resources early, so people can find them sooner
authored
115 =head1 DESCRIPTION
116
793304b Rocco Caputo Revise documentation in a major way.
authored
117 POE is a framework for cooperative, event driven multitasking and
118 networking in Perl. Other languages have similar frameworks. Python
119 has Twisted. TCL has "the event loop".
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
120
121 POE originally was developed as the core of a persistent object server
793304b Rocco Caputo Revise documentation in a major way.
authored
122 and runtime environment. It has since evolved into something much
123 more generic and widely useful.
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
124
793304b Rocco Caputo Revise documentation in a major way.
authored
125 POE provides a unified interface for several other event loops,
126 including select(), IO::Poll, Glib, Gtk, Tk, wx, Gtk2, and so on.
127 Check CPAN for the full list of POE::Loop modules.
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
128
793304b Rocco Caputo Revise documentation in a major way.
authored
129 POE is designed in layers, each building atop the lower level ones.
130 Programs are free to use POE at any level of abstraction, and
131 different levels can be mixed and matched seamlessly within a single
132 program.
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
133
793304b Rocco Caputo Revise documentation in a major way.
authored
134 POE's bundled abstraction layers are the tip of a growing iceberg.
135 Sprocket, POE::Stage, and other CPAN distributions build upon this
136 work. You're encouraged to look around.
4108539 Rocco Caputo Clean up the overview of Filter::Reference after someone (I forget!
authored
137
793304b Rocco Caputo Revise documentation in a major way.
authored
138 No matter how high you go, though, it all boils down to calls to
139 POE::Kernel. So your down-to-earth code can easily cooperate with
140 stratospheric systems.
d8788af Rocco Caputo Big documentation rewrite
authored
141
793304b Rocco Caputo Revise documentation in a major way.
authored
142 =head2 Layer 1: Kernel and Sessions
dddc865 Rocco Caputo I discovered the podchecker utility, and ran it on POE's
authored
143
793304b Rocco Caputo Revise documentation in a major way.
authored
144 The lowest public layer is comprised of POE::Kernel, POE::Session, and
145 other session types.
d8788af Rocco Caputo Big documentation rewrite
authored
146
793304b Rocco Caputo Revise documentation in a major way.
authored
147 POE::Kernel does most of the heavy lifting. It provides a portable
148 interface for filehandle activity detection, multiple alarms and other
149 timers, signal handling, and other less-common features.
d8788af Rocco Caputo Big documentation rewrite
authored
150
793304b Rocco Caputo Revise documentation in a major way.
authored
151 POE::Session and derived classes encapsulate the notion of an event
152 driven task. They also customize event dispatch to a particular
153 calling convention. POE::NFA, for example, is more of a proper state
154 machine. CPAN has several other kinds of sessions.
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
155
793304b Rocco Caputo Revise documentation in a major way.
authored
156 =head2 Layer 2: Wheels, Filters, and Drivers
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
157
793304b Rocco Caputo Revise documentation in a major way.
authored
158 POE::Wheel objects are dynamic mix-ins for POE::Session instances.
159 These "wheels" perform very common, generic tasks in a highly reusable
160 and customizable way. POE::Wheel::ReadWrite, for example, implements
161 non-blocking buffered I/O. Nearly everybody needs this, so why
162 require people to reinvent it all the time?
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
163
793304b Rocco Caputo Revise documentation in a major way.
authored
164 POE::Filter objects customize wheels in a modular way. Filters act as
165 I/O layers, turning raw streams into structured data, and serializing
166 structures into something suitable for streams. CPAN also has several
167 of these.
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
168
793304b Rocco Caputo Revise documentation in a major way.
authored
169 POE::Driver objects get relatively short shrift because very few are
170 needed. The most common driver, POE::Driver::SysRW is ubiquitous and
171 also the default, so most people will never need to specify one.
d8788af Rocco Caputo Big documentation rewrite
authored
172
793304b Rocco Caputo Revise documentation in a major way.
authored
173 But drivers are where wheels meet the road. In this case, the road is
174 some type of file handle. Drivers do the actual reading and writing
175 in a standard way so wheels don't need to know the difference between
176 send() and syswrite().
d8788af Rocco Caputo Big documentation rewrite
authored
177
793304b Rocco Caputo Revise documentation in a major way.
authored
178 =head2 Layer 3: Components
ad0d40f Rocco Caputo 0.08_05
authored
179
793304b Rocco Caputo Revise documentation in a major way.
authored
180 POE::Component classes are essentially Perl classes that use POE to
181 perform tasks in a non-blocking or cooperative way. This is a very
182 broad definition, and POE components are all over the abstraction map.
ad0d40f Rocco Caputo 0.08_05
authored
183
793304b Rocco Caputo Revise documentation in a major way.
authored
184 Many components, such as POE::Component::Server::SMTP, encapsulate the
185 generic details of an entire application. Others perform rather
186 narrow tasks, such as POE::Component::DirWatch::Object.
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
187
793304b Rocco Caputo Revise documentation in a major way.
authored
188 POE components are often just plain Perl objects. The previously
189 mentioned POE::Component::DirWatch::Object uses Moose. Other object
190 and meta-object frameworks are compatible.
626fc71 Rocco Caputo Bump the version number and halfheartedly revise the man page. The
authored
191
793304b Rocco Caputo Revise documentation in a major way.
authored
192 CPAN's got quite a lot of components.
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
193
793304b Rocco Caputo Revise documentation in a major way.
authored
194 =head2 Layer 4 and Beyond: Frameworks and Object Metaphors
3ddd789 Rocco Caputo Updated Windows and MacOS support info. in POE's man page.
authored
195
793304b Rocco Caputo Revise documentation in a major way.
authored
196 It's possible to abstract POE entirely behind a different framework.
197 In fact we encourage people to write domain-specific abstractions that
198 entirely hide POE if necessary. The nice thing here is that even at
199 these high levels of abstraction, things will continue to interoperate
200 all the way down to layer 1.
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
201
793304b Rocco Caputo Revise documentation in a major way.
authored
202 Two examples of ultra-high level abstraction are Sprocket, a
203 networking framework that does its own thing, and POE::Stage, which is
204 POE's creator's attempt to formalize and standardize POE components.
d8788af Rocco Caputo Big documentation rewrite
authored
205
793304b Rocco Caputo Revise documentation in a major way.
authored
206 =head2 Layer 0: POE's Internals
626fc71 Rocco Caputo Bump the version number and halfheartedly revise the man page. The
authored
207
793304b Rocco Caputo Revise documentation in a major way.
authored
208 POE's layered architecture doesn't stop below the surface. POE's guts
209 are broken into specific POE::Loop classes for each event loop it
210 supports. Internals are divided up by type, giving POE::Resource
211 classes for Aliases, Controls, Events, Extrefs, FileHandles, SIDs,
212 Sessions, Signals, and Statistics.
d8788af Rocco Caputo Big documentation rewrite
authored
213
793304b Rocco Caputo Revise documentation in a major way.
authored
214 POE::Kernel's APIs are extensible through POE::API mix-in classes.
215 Some brave souls have even published new APIs on CPAN, such as
216 POE::API::Peek (which gives you access to some of the internal
217 POE::Resource methods).
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
218
793304b Rocco Caputo Revise documentation in a major way.
authored
219 By design, it's possible to implement new POE::Kernel guts by creating
220 another POE::Resource class. One can then expose the functionality
221 with a new POE::API mix-in.
222
223 =head1 DOCUMENTATION ROADMAP
224
225 You're reading the main POE documentation. It's the general entry
226 point to the world of POE. You already know this, however, so let's
227 talk about something more interesting.
228
229 =head2 Basic Features
230
231 POE's basic features are documented mainly in POE::Kernel and
232 POE::Session. Methods are documented in the classes that implement
233 them. Broader concepts are covered in the most appropriate class, and
234 sometimes they are divided among classes that share in their
235 implementation.
236
237 =head2 @_[KERNEL, HEAP, etc.]
238
239 Event handler calling conventions, that weird C<@_[KERNEL, HEAP]>
240 stuff, is documented in POE::Session. That's because POE::Session
241 implements the calling convention, and other session types often do it
242 differently.
243
244 =head2 Base Classes Document Common Features
d8788af Rocco Caputo Big documentation rewrite
authored
245
793304b Rocco Caputo Revise documentation in a major way.
authored
246 The POE::Wheel, POE::Driver, POE::Filter, and POE::Component base
247 clasess describe what's common among each class. It's a good idea to
248 at least skim the base class documentation since the subclasses tend
249 not to rehash the common things.
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
250
793304b Rocco Caputo Revise documentation in a major way.
authored
251 POE::Queue, POE::Resource, POE::Loop, and POE::API document the
252 concepts and sometimes the standard interfaces behind multiple
253 subclasess. You're encouraged to have a look.
3ddd789 Rocco Caputo Updated Windows and MacOS support info. in POE's man page.
authored
254
793304b Rocco Caputo Revise documentation in a major way.
authored
255 =head2 Helper Classes
256
257 POE includes some helper classes for portability. POE::Pipe, and its
258 subclasses POE::Pipe::OneWay and POE::Pipe::TwoWay are portable pipes.
259
260 =head2 Event Loop Bridges
261
262 POE::Loop documents and specifies the interface for all of POE's event
263 loop bridges. The individual classes may document specific details,
264 but generally they adhere to the spec strongly enough that they don't
265 need to.
266
267 Many of the existing POE::Loop bridges provided in POE's base
268 distribution will move out to separate distributions shortly. The
269 documentation will probably remain the same, however.
270
271 =head2 POE::Queue and POE::Queue::Array
272
273 POE's event queue is basically a priority heap implemented as an
274 ordered array. POE::Queue documents the standard interface for POE
275 event queues, and POE::Queue::Array implements the ordered array
276 queue. Tony Cook has released POE::XS::Queue::Array, which is a
277 drop-in C replacement for POE::Queue::Array. You might give it a try
278 if you need more performance. POE's event queue is some of the
279 hottest code in the system.
280
281 =head2 This Section Isn't Complete
282
283 Help organize the documentation. Obviously we can't think of
284 everything. We're well aware of this and welcome audience
285 participation.
286
287 =head2 See SEE ALSO
288
289 Wherever possible, the SEE ALSO section will cross-reference one
290 module to related ones.
291
292 =head2 Don't Forget the Web
293
294 Finally, there are many POE resources on the web. The CPAN contains a
295 growing number of POE modules. L<http://poe.perl.org/> hosts POE's
296 wiki, which includes tutorials, an extensive set of examples,
297 documentation, and more. Plus it's a wiki, so you can trivially pitch
298 in your two cents.
299
300 =head1 SYSTEM REQUIREMENTS
301
302 POE's basic requirements are rather light. Most are included with
303 modern versions of Perl, and the rest (if any) should be generally
304 portable by now.
305
306 Time::HiRes is recommended, even for older Perls that don't include
307 it. POE will work without it, but alarms and other features will be
308 much more accurate if it's included. POE::Kernel will use Time::HiRes
309 automatically if it's available.
d8788af Rocco Caputo Big documentation rewrite
authored
310
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
311 Filter::Reference needs a module to serialize data for transporting it
312 across a network. It will use Storable, FreezeThaw, YAML, or some
313 other package with freeze() and thaw() methods. It can also use
314 Compress::Zlib to conserve bandwidth and reduce latency over slow
315 links, but it's not required.
d8788af Rocco Caputo Big documentation rewrite
authored
316
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
317 If you want to write web servers, you'll need to install libwww-perl,
318 which requires libnet. This is a small world of modules that includes
319 HTTP::Status, HTTP::Request, HTTP::Date, and HTTP::Response. They are
793304b Rocco Caputo Revise documentation in a major way.
authored
320 generally good to have, and modern versions of Perl even include them.
d8788af Rocco Caputo Big documentation rewrite
authored
321
793304b Rocco Caputo Revise documentation in a major way.
authored
322 Programs that use POE::Wheel::Curses require the Curses module, which
323 in turn requires some sort of curses library.
a4c9dd9 Rocco Caputo update Windows support docs, and a few other bits
authored
324
793304b Rocco Caputo Revise documentation in a major way.
authored
325 If you're using POE with Tk, you'll need Tk installed.
d8788af Rocco Caputo Big documentation rewrite
authored
326
793304b Rocco Caputo Revise documentation in a major way.
authored
327 And other obvious things. Let us know if we've overlooked a
328 non-obvious detail.
d8788af Rocco Caputo Big documentation rewrite
authored
329
793304b Rocco Caputo Revise documentation in a major way.
authored
330 =head1 COMPATIBILITY ISSUES
f77c574 Rocco Caputo revised documentation
authored
331
793304b Rocco Caputo Revise documentation in a major way.
authored
332 One of POE's design goals is to be as portable as possible. That's
333 why it's written in "Plain Perl". XS versions of POE modules are
334 avaliable as third-party distributions. Parts of POE that require
335 nonstandard libraries are optional, and not having those libraries
336 should not prevent POE from installing.
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
337
793304b Rocco Caputo Revise documentation in a major way.
authored
338 Despite Chris Williams' efforts, we can't test POE everywhere. Please
339 see the GETTING HELP section if you run into a problem.
d8788af Rocco Caputo Big documentation rewrite
authored
340
793304b Rocco Caputo Revise documentation in a major way.
authored
341 POE is expected to work on most forms of UNIX, including FreeBSD,
342 MacOS X, Linux, Solaris. Maybe even AIX and QNX, but we're not sure.
d8788af Rocco Caputo Big documentation rewrite
authored
343
793304b Rocco Caputo Revise documentation in a major way.
authored
344 POE has also been tested on Windows XP, using the latest version of
345 ActiveState Perl and Cygwin Perl. Support for the Neopolitan Perls
346 (Vanilla, Strawberry and Chocolate) is still early, but there should
347 be no major showstoppers.
d8788af Rocco Caputo Big documentation rewrite
authored
348
793304b Rocco Caputo Revise documentation in a major way.
authored
349 OS/2 and MacOS 9 have been reported to work in the past, but nobody
350 seems to be testing there anymore. Reports and patches are still
351 welcome.
d814423 Rocco Caputo doc patch and 19_filterchange.t Storable tweak
authored
352
793304b Rocco Caputo Revise documentation in a major way.
authored
353 Past versions of POE have been tested with Perl versions as far back
354 as 5.004_03 and as recent as "blead", today's development build. We
355 can no longer guarantee each release will work everywhere, but we will
356 be happy to work with you if you need special support for a really old
357 system.
d8788af Rocco Caputo Big documentation rewrite
authored
358
793304b Rocco Caputo Revise documentation in a major way.
authored
359 POE's quality is due in large part to the fine work of Chris Williams
360 and the other CPAN testers. They have dedicated resources towards
361 ensuring CPAN distributions pass their own tests, and we watch their
362 reports religiously. You can, too. The latest POE test reports can
363 be found at <http://testers.cpan.org/search?request=dist&dist=POE>.
d8788af Rocco Caputo Big documentation rewrite
authored
364
793304b Rocco Caputo Revise documentation in a major way.
authored
365 Thanks also go out to Benjamin Smith and the 2006 Google Summer of
366 Code. Ben was awarded a grant to improve POE's test suite, which he
367 did admirably.
368
369 =head2 Windows Issues
370
371 POE seems to work very nicely with Perl compiled for Cygwin. If you
372 must use ActiveState Perl, please use the absolute latest version.
373 ActiveState Perl's compatibility fluctuates from one build to another,
374 so we tend not to support older releases.
375
376 Windows and ActiveState Perl are considered an esoteric platform due
377 to the complex interactions between various versions. POE therefore
378 relies on user feedback and support here.
379
380 A number of people have helped bring POE's Windows support this far,
381 through contributions of time, patches, and other resources. Some of
382 them are: Sean Puckett, Douglas Couch, Andrew Chen, Uhlarik Ondoej,
383 Nick Williams, and Chris Williams (no relation).
384
385 =head2 Other Compatibility Issues
386
387 None currently known. See GETTING HELP below if you've run into
388 something.
389
390 =head1 GETTING HELP
391
392 POE's developers take pride in its quality. If you encounter a
393 problem, please let us know.
394
395 =head2 POE's Request Tracker
396
397 You're welcome to e-mail questions and bug reports to
398 <bug-POE@rt.cpan.org>. This is not a realtime support channel,
399 though. If you need a more immediate response, try one of the methods
400 below.
401
402 =head2 POE's Mailing List
403
404 POE has a dedicated mailing list where developers and users discuss
405 the software and its use. You're welcome to join us. Send an e-mail
406 to <poe-help@perl.org> for subscription instructions. The subject and
407 message body are ignored.
408
409 =head2 POE's Web Site
410
411 <http://poe.perl.org> contains recent information, tutorials, and
412 examples. It's also a wiki, so people are invited to share tips and
413 code snippets there as well.
414
415 =head2 SourceForge
416
417 http://sourceforge.net/projects/poe/ is POE's project page.
418
419 =head2 Internet Relay Chat (IRC)
420
421 irc.perl.org channel #poe is an informal place to waste some time and
422 maybe even discuss Perl and POE. Consider an SSH relay if your
423 workplace frowns on IRC. But only if they won't fire you if you're
424 caught.
425
426 =head2 Personal Support
427
428 Unfortunately we don't have resources to provide free one-on-one
429 personal support anymore. We'll do it for a fee, though. Send Rocco
430 an e-mail via his CPAN address.
d8788af Rocco Caputo Big documentation rewrite
authored
431
432 =back
433
f77c574 Rocco Caputo revised documentation
authored
434 =head1 SEE ALSO
d8788af Rocco Caputo Big documentation rewrite
authored
435
793304b Rocco Caputo Revise documentation in a major way.
authored
436 Broken down by abstraction layer.
437
438 TODO - Verify this is complete.
439
440 =head2 Layer 1
441
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
442 POE::Kernel, POE::Session, POE::NFA
f77c574 Rocco Caputo revised documentation
authored
443
793304b Rocco Caputo Revise documentation in a major way.
authored
444 =head2 Layer 2
445
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
446 POE::Wheel, POE::Wheel::Curses, POE::Wheel::FollowTail,
447 POE::Wheel::ListenAccept, POE::Wheel::ReadLine, POE::Wheel::ReadWrite,
448 POE::Wheel::Run, POE::Wheel::SocketFactory
f77c574 Rocco Caputo revised documentation
authored
449
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
450 POE::Driver, POE::Driver::SysRW
296aa91 Rocco Caputo finally add Dieter Pearcey's stackable filters
authored
451
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
452 POE::Filter, POE::Filter::Block, POE::Filter::Grep,
453 POE::Filter::HTTPD, POE::Filter::Line, POE::Filter::Map,
454 POE::Filter::RecordBlock, POE::Filter::Reference,
455 POE::Filter::Stackable, POE::Filter::Stream
296aa91 Rocco Caputo finally add Dieter Pearcey's stackable filters
authored
456
793304b Rocco Caputo Revise documentation in a major way.
authored
457 =head2 Layer 3
458
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
459 POE::Component, POE::Component::Client::TCP,
460 POE::Component::Server::TCP
f77c574 Rocco Caputo revised documentation
authored
461
793304b Rocco Caputo Revise documentation in a major way.
authored
462 =head2 Layer 0
463
f06f820 Rocco Caputo Mike Castle found references to the old POE::Loop::Poll in the
authored
464 POE::Loop, POE::Loop::Event, POE::Loop::Gtk, POE::Loop::IO_Poll,
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
465 POE::Loop::Select, POE::Loop::Tk
f77c574 Rocco Caputo revised documentation
authored
466
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
467 POE::Queue, POE::Queue::Array
296aa91 Rocco Caputo finally add Dieter Pearcey's stackable filters
authored
468
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
469 POE::Resource, POE::Resource::Aliases, POE::Resource::Events,
470 POE::Resource::Extrefs, POE::Resource::FileHandles,
471 POE::Resource::Performance, POE::Resource::SIDs,
472 POE::Resource::Sessions, POE::Resource::Signals
f77c574 Rocco Caputo revised documentation
authored
473
793304b Rocco Caputo Revise documentation in a major way.
authored
474 =head2 Helpers
475
476 POE::Pipe, POE::Pipe::OneWay, POE::Pipe::TwoWay
477
f77c574 Rocco Caputo revised documentation
authored
478 =head1 BUGS
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
479
793304b Rocco Caputo Revise documentation in a major way.
authored
480 The tests only cover about 70% of POE. Getting higher coverage is
481 really hard.
792d01e Rocco Caputo Documentation tweaks. Bump the version up to 0.31 for release.
authored
482
483 Bug reports, suggestions, and feedback of all kinds should be e-mailed
793304b Rocco Caputo Revise documentation in a major way.
authored
484 to <bug-POE@rt.cpan.org>. They will be entered into our request queue
485 and remain there until addressed. If your return address is valid,
486 you'll be notified when the status of your request changes.
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
487
793304b Rocco Caputo Revise documentation in a major way.
authored
488 Outstanding issues, including wish list items, are browsable in POE's
792d01e Rocco Caputo Documentation tweaks. Bump the version up to 0.31 for release.
authored
489 RT queue at L<http://rt.cpan.org/>.
ad0d40f Rocco Caputo 0.08_05
authored
490
d8788af Rocco Caputo Big documentation rewrite
authored
491 =head1 AUTHORS & COPYRIGHT
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
492
793304b Rocco Caputo Revise documentation in a major way.
authored
493 POE is the combined effort of quite a lot of people. This is an
494 incomplete list of some early contributors. A more complete list can
495 be found in POE's change log.
d8788af Rocco Caputo Big documentation rewrite
authored
496
497 =over 2
498
726aee4 Rocco Caputo credit more people
authored
499 =item Ann Barcomb
d8788af Rocco Caputo Big documentation rewrite
authored
500
726aee4 Rocco Caputo credit more people
authored
501 Ann Barcomb is <kudra@domaintje.com>, aka C<kudra>. Ann contributed
626fc71 Rocco Caputo Bump the version number and halfheartedly revise the man page. The
authored
502 large portions of POE::Simple and the code that became the ReadWrite
da6a2f2 Rocco Caputo Matt Sergeant contributed POE::Kernel::Poll, an event loop substrate
authored
503 support in POE::Component::Server::TCP. Her ideas also inspired
504 Client::TCP component, introduced in version 0.1702.
d8788af Rocco Caputo Big documentation rewrite
authored
505
f77c574 Rocco Caputo revised documentation
authored
506 =item Artur Bergman
d8788af Rocco Caputo Big documentation rewrite
authored
507
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
508 Artur Bergman is <sky@cpan.org>. He contributed many hours' work into
509 POE and quite a lot of ideas. Years later, I decide he's right and
510 actually implement them.
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
511
f77c574 Rocco Caputo revised documentation
authored
512 Artur is the author of Filter::HTTPD and Filter::Reference, as well as
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
513 bits and pieces throughout POE. His feedback, testing, design and
514 inspiration have been instrumental in making POE what it is today.
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
515
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
516 Artur is investing his time heavily into perl 5's iThreads and PONIE
517 at the moment. This project has far-reaching implications for POE's
518 future.
726aee4 Rocco Caputo credit more people
authored
519
520 =item Jos Boumans
521
522 Jos Boumans is <boumans@frg.eur.nl>, aka C<Co-Kane>. Jos is a major
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
523 driving force behind the POE::Simple movement and has helped inspire
524 the POE::Components for TCP clients and servers.
726aee4 Rocco Caputo credit more people
authored
525
526 =item Matt Cashner
527
957c350 sungo update my email address
sungo authored
528 Matt Cashner is <sungo@pobox.com>, aka C<sungo>. Matt is one of POE's
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
529 core developers. He's spearheaded the movement to simplify POE for
530 new users, flattening the learning curve and making the system more
531 accessible to everyone. He uses the system in mission critical
532 applications, folding feedback and features back into the distribution
533 for everyone's enjoyment.
726aee4 Rocco Caputo credit more people
authored
534
535 =item Andrew Chen
536
626fc71 Rocco Caputo Bump the version number and halfheartedly revise the man page. The
authored
537 Andrew Chen is <achen-poe@micropixel.com>. Andrew is the resident
538 POE/Windows guru. He contributes much needed testing for Solaris on
539 the SPARC and Windows on various Intel platforms.
726aee4 Rocco Caputo credit more people
authored
540
f77c574 Rocco Caputo revised documentation
authored
541 =item Douglas Couch
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
542
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
543 Douglas Couch is <dscouch@purdue.edu>. Douglas helped port and
544 maintain POE for Windows early on.
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
545
726aee4 Rocco Caputo credit more people
authored
546 =item Jeffrey Goff
547
548 Jeffrey Goff is <jgoff@blackboard.com>. Jeffrey is the author of
549 several POE modules, including a tokenizing filter and a component for
550 managing user information, PoCo::UserBase. He's also co-author of "A
551 Beginner's Introduction to POE" at www.perl.com.
552
f77c574 Rocco Caputo revised documentation
authored
553 =item Philip Gwyn
d8788af Rocco Caputo Big documentation rewrite
authored
554
f77c574 Rocco Caputo revised documentation
authored
555 Philip Gwyn is <gwynp@artware.qc.ca>. He extended the Wheels I/O
556 abstraction to support hot-swappable filters, and he eventually
626fc71 Rocco Caputo Bump the version number and halfheartedly revise the man page. The
authored
557 convinced Rocco that unique session and kernel IDs were a good thing.
d8788af Rocco Caputo Big documentation rewrite
authored
558
f77c574 Rocco Caputo revised documentation
authored
559 Philip also enhanced Filter::Reference to support different
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
560 serialization methods. He has also improved POE's quality by finding
561 and fixing several bugs. He provided POE a much needed code review
562 around version 0.06.
d8788af Rocco Caputo Big documentation rewrite
authored
563
726aee4 Rocco Caputo credit more people
authored
564 =item Arnar M. Hrafnkelsson
565
566 Arnar is <addi@umich.edu>. Addi tested POE and POE::Component::IRC on
567 Windows, finding bugs and testing fixes. He appears throughout the
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
568 Changes file. He has also written "cpoe", which is a POE-like library
569 for C.
726aee4 Rocco Caputo credit more people
authored
570
f77c574 Rocco Caputo revised documentation
authored
571 =item Dave Paris
d8788af Rocco Caputo Big documentation rewrite
authored
572
f77c574 Rocco Caputo revised documentation
authored
573 Dave Paris is <dparis@w3works.com>. Dave tested and benchmarked POE
574 around version 0.05, discovering some subtle (and not so subtle)
575 timing problems. The pre-forking server sample was his idea.
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
576 Versions 0.06 and later scaled to higher loads because of his work.
577 He has contributed a lot of testing and feedback, much of which is
578 tagged in the Changes file as a-mused. The man is scarily good at
579 testing and troubleshooting.
761b0d6 Rocco Caputo speed up kernel; fix bad filehandle in test 4
authored
580
f77c574 Rocco Caputo revised documentation
authored
581 =item Dieter Pearcey
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
582
c575666 Rocco Caputo added Filter::Block and Dieter's FollowTail patches; finishing touches f...
authored
583 Dieter Pearcey is <dieter@bullfrog.perlhacker.org>. He goes by
626fc71 Rocco Caputo Bump the version number and halfheartedly revise the man page. The
authored
584 several Japanese nicknames. Dieter's current area of expertise is in
585 Wheels and Filters. He greatly improved Wheel::FollowTail, and his
586 Filter contributions include the basic Block filter, as well as
587 Stackable, RecordBlock, Grep and Map.
c575666 Rocco Caputo added Filter::Block and Dieter's FollowTail patches; finishing touches f...
authored
588
f77c574 Rocco Caputo revised documentation
authored
589 =item Robert Seifer
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
590
d8788af Rocco Caputo Big documentation rewrite
authored
591 Robert Seifer is <e-mail unknown>. He rotates IRC nicknames
592 regularly.
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
593
d8788af Rocco Caputo Big documentation rewrite
authored
594 Robert contributed entirely too much time, both his own and his
595 computers, towards the detection and eradication of a memory
596 corruption bug that POE tickled in earlier Perl versions. In the end,
597 his work produced a simple compile-time hack that worked around a
598 problem relating to anonymous subs, scope and @{} processing.
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
599
da6a2f2 Rocco Caputo Matt Sergeant contributed POE::Kernel::Poll, an event loop substrate
authored
600 =item Matt Sergeant
601
602 Matt contributed POE::Kernel::Poll, a more efficient way to watch
f06f820 Rocco Caputo Mike Castle found references to the old POE::Loop::Poll in the
authored
603 multiple files than select(). It's since been moved to
604 POE::Loop::IO_Poll.
da6a2f2 Rocco Caputo Matt Sergeant contributed POE::Kernel::Poll, an event loop substrate
authored
605
726aee4 Rocco Caputo credit more people
authored
606 =item Richard Soderberg
607
608 Richard Soderberg is <poe@crystalflame.net>, aka C<coral>. Richard is
609 a collaborator on several side projects involving POE. His work
610 provides valuable testing and feedback from a user's point of view.
611
f77c574 Rocco Caputo revised documentation
authored
612 =item Dennis Taylor
197063a Rocco Caputo gutted and rewrote Filter::Line's innards for extra options
authored
613
614 Dennis Taylor is <dennis@funkplanet.com>. Dennis has been testing,
615 debugging and patching bits here and there, such as Filter::Line which
616 he improved by leaps in 0.1102. He's also the author of
641566b Rocco Caputo I accidentally rewrote the documentation for this module.
authored
617 POE::Component::IRC, the widely popular POE-based successor to his
618 wildly popular Net::IRC library.
197063a Rocco Caputo gutted and rewrote Filter::Line's innards for extra options
authored
619
f77c574 Rocco Caputo revised documentation
authored
620 =item Others?
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
621
793304b Rocco Caputo Revise documentation in a major way.
authored
622 Please contact the author if you've been forgotten and would like to
623 be included here.
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
624
625 =back
626
627 =head2 Author
628
d8788af Rocco Caputo Big documentation rewrite
authored
629 =over 2
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
630
f77c574 Rocco Caputo revised documentation
authored
631 =item Rocco Caputo
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
632
793304b Rocco Caputo Revise documentation in a major way.
authored
633 Rocco Caputo is <rcaputo@cpan.org>. POE is his brainchild. He wishes
634 to thank you for your interest, and he has more thanks than he can
635 count for all the people who have contributed. POE would not be
636 nearly as cool without you.
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
637
793304b Rocco Caputo Revise documentation in a major way.
authored
638 Except where otherwise noted, POE is Copyright 1998-2007 Rocco Caputo.
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
639 All rights reserved. POE is free software; you may redistribute it
640 and/or modify it under the same terms as Perl itself.
641
d8788af Rocco Caputo Big documentation rewrite
authored
642 =back
643
644 Thank you for reading!
645
0d6f19d Rocco Caputo Revised all the manpages. Split the manpages into separate PODs, and
authored
646 =cut
82929ed Rocco Caputo Mark files that need to be redocumented.
authored
647
648 # rocco // vim: ts=2 sw=2 expandtab
Something went wrong with that request. Please try again.