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.