Changes for version 0.098

  • Change: 6232da8fc427b5a90573130cab1746d11583a91c Author: Rocco Caputo <rcaputo@cpan.org> Date : 2012-06-05 11:27:46 +0000
    • Fix dist.ini for better release automation.
  • Change: 9fe808025575ec51014250617dbad08785d685e1 Author: Rocco Caputo <rcaputo@cpan.org> Date : 2012-06-04 01:47:15 +0000
    • Generate _clone() methods at class compile time.
    • The attributes being cloned don't change at runtime. A dynamic loop over the attributes in a class is more flexibility than we need right now. Build the code for _clone() at compile time, string-eval it into existence, and then use meta add_method() to put it into place.
    • Future self, please forgive me.
  • Change: 8854a8610491ec04d9d654782993529abde32862 Author: Rocco Caputo <rcaputo@cpan.org> Date : 2012-06-04 01:46:29 +0000
    • Add a benchmark for re_emit(), which helps profile event cloning.
  • Change: ec4a1817922d759c599bfd0bf7998a64db22c824 Author: Rocco Caputo <rcaputo@cpan.org> Date : 2012-06-03 22:39:49 +0000
    • Memoize Reflex::Event attribute names by class.
    • Class attribute names don't change at runtime, so call it only once and memoize them.
  • Change: 5bc706912d4072d64c3b64fdb63bdb0adffe6c47 Author: Rocco Caputo <rcaputo@cpan.org> Date : 2012-06-03 22:33:57 +0000
    • Make classes immutable. Mutable classes are a lot slower.
  • Change: 55385547d6508b2aa44b740969a6409c1cb6eb65 Author: Rocco Caputo <rcaputo@cpan.org> Date : 2012-06-03 22:26:09 +0000
    • Add the first benchmarking/profiling program: event creation & destruction.
  • Change: 9dc4b344cc9a041d46492fd26d97cc3f9d3b06df Author: Rocco Caputo <rcaputo@cpan.org> Date : 2012-05-17 05:17:10 +0000
    • Merge pull request #3 from yanick/patch-1
    • SYMOPSIS? :-)
  • Change: 517a0e8fc54a6a0cd323f88c8448b25f9bbee3a1 Author: Yanick Champoux <yanick@babyl.dyndns.org> Date : 2012-05-16 18:03:22 +0000
    • SYMOPSIS? :-)
  • Change: a5a26bf9a098ed3f1d9bcf9d78ab26f2c2763a6f Author: Rocco Caputo <rcaputo@cpan.org> Date : 2012-04-17 09:27:47 +0000
    • Document how to plug in new event loops without crazy shenanigans.
  • Change: 789a130f73138ba063b59fccd4b05700d040ad32 Author: Rocco Caputo <rcaputo@cpan.org> Date : 2012-04-17 09:25:37 +0000
    • Fix make_error_handler() to use event objects.
    • Nick Perez pointed out that make_error_hanler() was using the old style events. I fixed that and a typo invoked by the error condition in Reflex::Role::Connecting.
  • Change: 8c5b88149fd2beba7b18521c23283d0d4653cf9f Author: Rocco Caputo <rcaputo@cpan.org> Date : 2012-03-26 01:32:07 +0000
    • Reserve MooseX::Role::Reactive for the event-loop agnostic part of Reflex.

Documentation

What is Reflex, and how do I use it?

Modules

Class library for flexible, reactive programs.
a non-blocking server (client socket acceptor)
Base class for reactive (aka, event driven) objects.
Generic callback adapters to simplify calling back
Callback adapter for plain code references
Callback adapter for class and object methods
Non-callback, inline Promise adapter
Convenience functions for creating and using callbacks
A non-blocking socket client.
Autmatically manage a collection of collectible objects
non-blocking client socket connector
A stand-alone multi-shot periodic callback
Watch the exit of a subprocess by its SIGCHLD signal.
Communicate with POE components expecting events.
Communicate with POE components expecting postbacks.
Watch events from a POE::Session object.
Base class for POE::Wheel wrappers.
Represent POE::Wheel::Run as a Reflex class.
define a Reflex paramaterized role
add connection accepting to a class
add manageability by Reflex::Collection
add non-blocking client connecting to a class
add streaming input behavior to a class
set a periodic, recurring timer
add streaming input behavior to a class
add async process reaping behavior to a class
Make an object reactive (aka, event driven).
add readable-watching behavior to a class
add standard sysread() behavior to a class
Mix standard send/recv code into a class.
add signal catching behavior to a class
add streaming I/O behavior to a class
set a wakeup callback for a relative delay
set a wakeup callback for a particular UNIX time
add writable-watching behavior to a class
add buffered non-blocking syswrite() to a class
receive callbacks when signals arrive
Buffered, translated I/O on non-blocking handles.
A stand-alone single-shot delayed callback
Emit an event when an attribute's value changes.
Automaticall watch Reflex objects.
Automatically watch Reflex objects.
Base class for non-blocking UDP networking peers.
A stand-alone single-shot callback at an absolute time

Provides

in docs/intro/AfterAwhileClass.pm
in docs/intro/AfterAwhileRole.pm
in docs/intro/AfterAwhileSubclass.pm
in docs/intro/AsyncAwhileClass.pm
in docs/intro/AsyncAwhileRole.pm
in lib/Reflex/Codec/Message.pm
in lib/Reflex/Codec/Message/Datagram.pm
in lib/Reflex/Codec/Message/Eof.pm
in lib/Reflex/Codec/Message/Stream.pm
in lib/Reflex/Decoder/Line.pm
in lib/Reflex/Eg.pm
in lib/Reflex/Eg/Inheritance/Moose.pm
in lib/Reflex/Eg/Inheritance/Plain.pm
in lib/Reflex/Encoder/Line.pm
in lib/Reflex/Event.pm
in lib/Reflex/Event/Datagram.pm
in lib/Reflex/Event/EOF.pm
in lib/Reflex/Event/Error.pm
in lib/Reflex/Event/FileHandle.pm
in lib/Reflex/Event/Flushed.pm
in lib/Reflex/Event/Interval.pm
in lib/Reflex/Event/Octets.pm
in lib/Reflex/Event/POE.pm
in lib/Reflex/Event/Postback.pm
in lib/Reflex/Event/SigChild.pm
in lib/Reflex/Event/Signal.pm
in lib/Reflex/Event/Socket.pm
in lib/Reflex/Event/Time.pm
in lib/Reflex/Event/Timeout.pm
in lib/Reflex/Event/ValueChange.pm
in lib/Reflex/Event/Wakeup.pm
in lib/Reflex/Filehandle.pm
in lib/Reflex/Role/Decoding.pm
in lib/Reflex/Role/Decoding/Datagram.pm
in lib/Reflex/Role/Decoding/Stream.pm
in lib/Reflex/Role/Encoding.pm

Examples