![]() |
![]()
| ![]() |
![]()
NAMEPrima::File - asynchronous stream I/O. SYNOPSISuse strict; use Prima qw(Application); # create pipe and autoflush the writer end pipe(READ, WRITE) or die "pipe():$!\n"; select WRITE; $|=1; select STDOUT; # create Prima listener on the reader end my $read = Prima::File-> new( file => \*READ, mask => fe::Read, onRead => sub { $_ = <READ>; print "read:$_\n"; }, ); print WRITE "line\n"; run Prima; DESCRIPTIONPrima::File provides access to the I/O stream events, that are called when a file handle becomes readable, writable or if an exception occurred. Registering file handles to Prima::File objects makes possible the stream operations coexist with the event loop. USAGEPrima::File is a descendant of Prima::Component. Objects of Prima::File class must be bounded to a valid file handle object, before the associated events can occur: my $f = Prima::File-> create(); $f-> file( *STDIN); When a file handle, blinded via the "::file" property becomes readable, writable or when an exception signaled, one of three correspondent events called - "Read", "Write" or "Exception". When a handle is always readable, or always writable, or, some of these events are desired to be blocked, the file event mask can be set via the "::mask" property: $f-> mask( fe::Read | fe::Exception); NB. Due to different system implementations, the only handles, currently supported on all systems, are socket handle and disk file handles. Pipes only work on unix platforms. The example file socket.pl elucidates the use of sockets together with Prima::File. When a file handle is not needed anymore, it is expected to be detached from an object explicitly: $f-> file( undef); However, if the system detects that a file handle is no longer valid, it is automatically detached. It is possible to check, if a file handle is still valid by calling the is_active() method. Prima::File events are basically the same I/O callbacks, provided by a system select() call. See documentation of your system's select() for the implementation details. APIProperties
Methods
Events
Win32 implementationOn windows (but not on cygwin), file handles do not report I/O events, only sockets and consoles do. All other handles are assumed to be inherently readable and writable, and if one is subscribed to these events, they are fired non-stop, so event warning with event flooding here. AUTHORDmitry Karasik, <dmitry@karasik.eu.org>. SEE ALSOPrima, Prima::Object
|