Revision history for Async-Event-Interval 1.12 2022-03-31 - Only remove the Async::Event::Interval protected shared %events hash if it contains any keys (ie. event objects). When running in things like 'plackup', END{} was being called on each browser session close, but there were still objects, so we were trashing the %events infrastructure prematurely - Each unit test file now does pre-and-post segment counts and displays them if PRINT_SEGS env var is true, and the suite itself has a before and after count comparison to ensure the suite leaked no segments or semaphores - Fix issue where we were trying to set a _pid() on an undefined value, causing IPC::Shareable to complain that "Can't STORE on undef val" 1.11 2022-03-09 - Modified tests to run only on valid CI platforms 1.10 2022-03-07 - Add tests to ensure that all shared memory segments created during the unit test suite run get cleaned up ok - Bump prereq of IPC::Shareable to 1.11 due to bug fix where child shared memory segments created under one process weren't being registered if the parent was created in a different process 1.09 2022-03-05 - Bump prereq IPC::Shareable to 1.08 due to a fix in creating random SHM keys in forked environments, major improvements of its _shm_key_rand() function, and its ability to set a 'protected' option so our global shared %events hash doesn't get cleaned up automatically - Modified examples/shared.pl so it doesn't leak segments and semaphores after completion - We now remove %events hash in END instead of DESTROY. This way we can have objects go out of scope in a script without blowing away the global shared data - Added _end() so that we can test the END block in unit tests. END{} calls _end() upon program termination 1.08 2022-03-03 - Added pid(), getter-only wrapper for _pid() - Added example of using shared data with IPC::Shareable 1.07 2022-03-03 - interval() no longer requires stop/start of event to take effect - Re-arranged initialization routine to allow for the above - Interval is now stored in the %events shared hash so that the event can access it directly 1.06 2022-03-03 - Class level hash that contains information about all existing events now lives in shared memory so we can track operation informtion from within the events themselves - Added runs() method, tracks the number of callback executions of an event - Added errors() method, tracks the number of times a callback fails - Added error_message() method, stores the most recent error message from the callback if an error has been logged - Modified _shm_rand_key() to return a 12-char ALPHA string - Updated tests to ensure they destroy any shared memory segments they create 1.05 2022-03-01 - We now wait interval time before executing the event for the first time - Added error(), returns error status instead of using status() == -1 - status() no longer sets -1. We now use error() for that 1.04 2021-05-11 - Fix issue in t/45-params.t where done_testing() may have been called multiple times (fixes #5) - Fix issue where _rand_shm_key() could generate non-unique shared memory segment keys (fixes #4) 1.03 2021-05-05 - Added events() class function, returns hash reference details of each event that's been created - Added id() object method; returns the ID of the event - Added info() object method; returns an href of details about the event - Added shared_scalar() object method; Returns a reference to a scalar that resides in shared memory. We use IPC::Shareable for the backend - Fixed issue where fractional seconds weren't being honoured - POD updates, including a new SYNOPSIS - Added accessor methods for most object attributes 1.02 2021-04-15 - Updated shared data example to be a scalar - Update t/10-shared.t as it was failing under MacOS/FreeBSD 1.01 2021-04-14 - If interval is set to zero, we'll run only once - Added IPC::Shareable as prerequisite - Added waiting(), checks to see if an event is ready to start/restart 1.00 2018-01-23 - modified t/15-interval.t with some timing changes to prevent CPAN Testers failures - added t/45-params.t to cover cases where we send in parameters to the event - added an EXAMPLE to display how to send in params to the event callback 0.05 2017-10-20 - POD fix (indenting examples) - bump copyright to 2017 0.04 2017-10-19 - added examples/shared.pl, shared variable between all events and the parent - major overhaul on PID handling which provided the ability to rework status() to be much more reliable (and effective) - we now set $SIG{CHLD}="IGNORE" to avoid defunct processes - added Carp (croak) for all fatal errors - status() now returns -1 if an event has crashed, providing the user with the ability to restart the event, or take other action - added examples/timeout.pl and examples/event_crash.pl 0.03 2016-10-16 - removed restart(), and aliased it instead to start() - fixed issue in an already-running warn on start(), and added status() to check the running status of an event (closes #1) 0.02 2016-09-24 - POD fixes 0.01 Date/time - First version, released on an unsuspecting world.