Test2::IPC::Driver(3perl) | Perl Programmers Reference Guide | Test2::IPC::Driver(3perl) |
Test2::IPC::Driver - Base class for Test2 IPC drivers.
package Test2::IPC::Driver::MyDriver; use base 'Test2::IPC::Driver'; ...
Test2::IPC::Driver has an "import()" method. All drivers inherit this import method. This import method registers the driver.
In most cases you just need to load the desired IPC driver to make it work. You should load this driver as early as possible. A warning will be issued if you load it too late for it to be effective.
use Test2::IPC::Driver::MyDriver; ...
package Test2::IPC::Driver::MyDriver; use strict; use warnings; use base 'Test2::IPC::Driver'; sub is_viable { return 0 if $^O eq 'win32'; # Will not work on windows. return 1; } sub add_hub { my $self = shift; my ($hid) = @_; ... # Make it possible to contact the hub } sub drop_hub { my $self = shift; my ($hid) = @_; ... # Nothing should try to reach the hub anymore. } sub send { my $self = shift; my ($hid, $e, $global) = @_; ... # Send the event to the proper hub. # This may notify other procs/threads that there is a pending event. Test2::API::test2_ipc_set_pending($uniq_val); } sub cull { my $self = shift; my ($hid) = @_; my @events = ...; # Here is where you get the events for the hub return @events; } sub waiting { my $self = shift; ... # Notify all listening procs and threads that the main ... # process/thread is waiting for them to finish. } 1;
sub add_hub { my $self = shift; my ($hid) = @_; ... # Make it possible to contact the hub }
sub drop_hub { my $self = shift; my ($hid) = @_; ... # Nothing should try to reach the hub anymore. }
sub send { my $self = shift; my ($hid, $e) = @_; ... # Send the event to the proper hub. # This may notify other procs/threads that there is a pending event. Test2::API::test2_ipc_set_pending($uniq_val); }
If $global is true then the driver should send the event to all hubs in all processes and threads.
sub cull { my $self = shift; my ($hid) = @_; my @events = ...; # Here is where you get the events for the hub return @events; }
sub waiting { my $self = shift; ... # Notify all listening procs and threads that the main ... # process/thread is waiting for them to finish. }
The source code repository for Test2 can be found at http://github.com/Test-More/test-more/.
Copyright 2020 Chad Granum <exodist@cpan.org>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See http://dev.perl.org/licenses/
2023-11-25 | perl v5.36.0 |