Skip to content
Browse files

Finished refactor

  • Loading branch information...
1 parent 2b3c499 commit 2440745a368f071ffddeb24077427556c0781fe9 @exodist committed
View
12 README
@@ -105,6 +105,18 @@ OBJECT METHODS
$proc = $child->start()
Start the child process.
+SEE ALSO
+ Child::Link::Proc
+ The proc object that is returned by $child->start()
+
+ Child::Link::Parent
+ The parent object that is provided as the argumunt to the function
+ used to define the child.
+
+ Child::Link::IPC
+ The base class for IPC plugin link objects. This provides the IPC
+ methods.
+
HISTORY
Most of this was part of Parrallel::Runner intended for use in the
Fennec project. Fennec is being broken into multiple parts, this is one
View
19 lib/Child.pm
@@ -217,6 +217,25 @@ Start the child process.
=back
+=head1 SEE ALSO
+
+=over 4
+
+=item L<Child::Link::Proc>
+
+The proc object that is returned by $child->start()
+
+=item L<Child::Link::Parent>
+
+The parent object that is provided as the argumunt to the function used to
+define the child.
+
+=item L<Child::Link::IPC>
+
+The base class for IPC plugin link objects. This provides the IPC methods.
+
+=back
+
=head1 HISTORY
Most of this was part of L<Parrallel::Runner> intended for use in the L<Fennec>
View
46 lib/Child/IPC/Pipe.pm
@@ -25,3 +25,49 @@ sub new {
}
1;
+
+=head1 NAME
+
+Child::IPC::Pipe - Pipe based IPC plugin for L<Child>
+
+=head1 DESCRIPTION
+
+Creates 2 pipes just before forking.
+
+=head1 HISTORY
+
+Most of this was part of L<Parrallel::Runner> intended for use in the L<Fennec>
+project. Fennec is being broken into multiple parts, this is one such part.
+
+=head1 FENNEC PROJECT
+
+This module is part of the Fennec project. See L<Fennec> for more details.
+Fennec is a project to develop an extendable and powerful testing framework.
+Together the tools that make up the Fennec framework provide a potent testing
+environment.
+
+The tools provided by Fennec are also useful on their own. Sometimes a tool
+created for Fennec is useful outside the greator framework. Such tools are
+turned into their own projects. This is one such project.
+
+=over 2
+
+=item L<Fennec> - The core framework
+
+The primary Fennec project that ties them all together.
+
+=back
+
+=head1 AUTHORS
+
+Chad Granum L<exodist7@gmail.com>
+
+=head1 COPYRIGHT
+
+Copyright (C) 2010 Chad Granum
+
+Child is free software; Standard perl licence.
+
+Child is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the license for more details.
View
42 lib/Child/Link.pm
@@ -24,3 +24,45 @@ sub new {
}
1;
+
+=head1 NAME
+
+Child::Link - Base class for objects that link child and parent processes.
+
+=head1 HISTORY
+
+Most of this was part of L<Parrallel::Runner> intended for use in the L<Fennec>
+project. Fennec is being broken into multiple parts, this is one such part.
+
+=head1 FENNEC PROJECT
+
+This module is part of the Fennec project. See L<Fennec> for more details.
+Fennec is a project to develop an extendable and powerful testing framework.
+Together the tools that make up the Fennec framework provide a potent testing
+environment.
+
+The tools provided by Fennec are also useful on their own. Sometimes a tool
+created for Fennec is useful outside the greator framework. Such tools are
+turned into their own projects. This is one such project.
+
+=over 2
+
+=item L<Fennec> - The core framework
+
+The primary Fennec project that ties them all together.
+
+=back
+
+=head1 AUTHORS
+
+Chad Granum L<exodist7@gmail.com>
+
+=head1 COPYRIGHT
+
+Copyright (C) 2010 Chad Granum
+
+Child is free software; Standard perl licence.
+
+Child is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the license for more details.
View
111 lib/Child/Link/IPC.pm
@@ -10,9 +10,10 @@ add_accessors qw/ipc/;
add_abstract qw/
read_handle
write_handle
- init
/;
+sub init {}
+
sub new {
my $class = shift;
my ( $pid, @shared ) = @_;
@@ -61,3 +62,111 @@ sub write {
}
1;
+
+=head1 NAME
+
+Child::Link::IPC - Base class for process links that provide IPC.
+
+=head1 SEE ALSO
+
+This class inherits from:
+
+=over 4
+
+=item L<Child::Link>
+
+=back
+
+=head1 METHODS
+
+=over 4
+
+=item $proc->new( $pid. @shared )
+
+Constructor
+
+=item $proc->read()
+
+Read a message from the child.
+
+=item $proc->write( @MESSAGES )
+
+Send the messages to the child. works like print, you must add "\n".
+
+=item $proc->say( @MESSAGES )
+
+Send the messages to the child. works like say, adds the seperator for you
+(usually "\n").
+
+=item $proc->autoflush( $BOOL )
+
+Turn autoflush on/off for the current processes write handle. This is on by
+default.
+
+=item $proc->flush()
+
+Flush the current processes write handle.
+
+=item $proc->ipc()
+
+=item $proc->_ipc( $new )
+
+Accessors for you to use or ignore.
+
+=back
+
+=head1 ABSTRACT METHODS
+
+=over 4
+
+=item $proc->read_handle()
+
+Should return a read handle for reading from the child.
+
+=item $proc->write_handle()
+
+Should return a write handle for writing to the child.
+
+=item $proc->init( @shared )
+
+Called by new during construction
+
+=back
+
+=head1 HISTORY
+
+Most of this was part of L<Parrallel::Runner> intended for use in the L<Fennec>
+project. Fennec is being broken into multiple parts, this is one such part.
+
+=head1 FENNEC PROJECT
+
+This module is part of the Fennec project. See L<Fennec> for more details.
+Fennec is a project to develop an extendable and powerful testing framework.
+Together the tools that make up the Fennec framework provide a potent testing
+environment.
+
+The tools provided by Fennec are also useful on their own. Sometimes a tool
+created for Fennec is useful outside the greator framework. Such tools are
+turned into their own projects. This is one such project.
+
+=over 2
+
+=item L<Fennec> - The core framework
+
+The primary Fennec project that ties them all together.
+
+=back
+
+=head1 AUTHORS
+
+Chad Granum L<exodist7@gmail.com>
+
+=head1 COPYRIGHT
+
+Copyright (C) 2010 Chad Granum
+
+Child is free software; Standard perl licence.
+
+Child is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the license for more details.
View
53 lib/Child/Link/IPC/Pipe.pm
@@ -28,3 +28,56 @@ sub init {
}
1;
+
+=head1 NAME
+
+Child::Link::IPC::Pipe - Base class for link objects used by the
+L<Child::IPC::Pipe> plugin.
+
+=head1 SEE ALSO
+
+This class inherits from:
+
+=over 4
+
+=item L<Child::Link::IPC>
+
+=back
+
+=head1 HISTORY
+
+Most of this was part of L<Parrallel::Runner> intended for use in the L<Fennec>
+project. Fennec is being broken into multiple parts, this is one such part.
+
+=head1 FENNEC PROJECT
+
+This module is part of the Fennec project. See L<Fennec> for more details.
+Fennec is a project to develop an extendable and powerful testing framework.
+Together the tools that make up the Fennec framework provide a potent testing
+environment.
+
+The tools provided by Fennec are also useful on their own. Sometimes a tool
+created for Fennec is useful outside the greator framework. Such tools are
+turned into their own projects. This is one such project.
+
+=over 2
+
+=item L<Fennec> - The core framework
+
+The primary Fennec project that ties them all together.
+
+=back
+
+=head1 AUTHORS
+
+Chad Granum L<exodist7@gmail.com>
+
+=head1 COPYRIGHT
+
+Copyright (C) 2010 Chad Granum
+
+Child is free software; Standard perl licence.
+
+Child is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the license for more details.
View
56 lib/Child/Link/IPC/Pipe/Parent.pm
@@ -12,3 +12,59 @@ use base qw/
sub cross_pipes { 1 };
1;
+
+=head1 NAME
+
+Child::Link::IPC::Pipe::Parent - Parent object used by the pipe plugin.
+
+=head1 SEE ALSO
+
+This class inherits from:
+
+=over 4
+
+=item L<Child::Link::Parent>
+
+=item L<Child::Link::IPC>
+
+=item L<Child::Link::IPC::Pipe>
+
+=back
+
+=head1 HISTORY
+
+Most of this was part of L<Parrallel::Runner> intended for use in the L<Fennec>
+project. Fennec is being broken into multiple parts, this is one such part.
+
+=head1 FENNEC PROJECT
+
+This module is part of the Fennec project. See L<Fennec> for more details.
+Fennec is a project to develop an extendable and powerful testing framework.
+Together the tools that make up the Fennec framework provide a potent testing
+environment.
+
+The tools provided by Fennec are also useful on their own. Sometimes a tool
+created for Fennec is useful outside the greator framework. Such tools are
+turned into their own projects. This is one such project.
+
+=over 2
+
+=item L<Fennec> - The core framework
+
+The primary Fennec project that ties them all together.
+
+=back
+
+=head1 AUTHORS
+
+Chad Granum L<exodist7@gmail.com>
+
+=head1 COPYRIGHT
+
+Copyright (C) 2010 Chad Granum
+
+Child is free software; Standard perl licence.
+
+Child is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the license for more details.
View
56 lib/Child/Link/IPC/Pipe/Proc.pm
@@ -12,3 +12,59 @@ use base qw/
sub cross_pipes { 0 };
1;
+
+=head1 NAME
+
+Child::Link::IPC::Pipe::Proc - Proc object used by the pipe plugin.
+
+=head1 SEE ALSO
+
+This class inherits from:
+
+=over 4
+
+=item L<Child::Link::Proc>
+
+=item L<Child::Link::IPC>
+
+=item L<Child::Link::IPC::Pipe>
+
+=back
+
+=head1 HISTORY
+
+Most of this was part of L<Parrallel::Runner> intended for use in the L<Fennec>
+project. Fennec is being broken into multiple parts, this is one such part.
+
+=head1 FENNEC PROJECT
+
+This module is part of the Fennec project. See L<Fennec> for more details.
+Fennec is a project to develop an extendable and powerful testing framework.
+Together the tools that make up the Fennec framework provide a potent testing
+environment.
+
+The tools provided by Fennec are also useful on their own. Sometimes a tool
+created for Fennec is useful outside the greator framework. Such tools are
+turned into their own projects. This is one such project.
+
+=over 2
+
+=item L<Fennec> - The core framework
+
+The primary Fennec project that ties them all together.
+
+=back
+
+=head1 AUTHORS
+
+Chad Granum L<exodist7@gmail.com>
+
+=head1 COPYRIGHT
+
+Copyright (C) 2010 Chad Granum
+
+Child is free software; Standard perl licence.
+
+Child is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the license for more details.
View
66 lib/Child/Link/Parent.pm
@@ -16,3 +16,69 @@ sub detach {
}
1;
+
+=head1 NAME
+
+Child::Link::Proc - Proc object used by L<Child>.
+
+=head1 SEE ALSO
+
+This class inherits from:
+
+=over 4
+
+=item L<Child::Link>
+
+=back
+
+=head1 METHODS
+
+=over 4
+
+=item $proc->pid()
+
+Returns the parent process PID.
+
+=item $proc->detach()
+
+Detach the from the parent. uses POSIX::setsid().
+
+=back
+
+=head1 HISTORY
+
+Most of this was part of L<Parrallel::Runner> intended for use in the L<Fennec>
+project. Fennec is being broken into multiple parts, this is one such part.
+
+=head1 FENNEC PROJECT
+
+This module is part of the Fennec project. See L<Fennec> for more details.
+Fennec is a project to develop an extendable and powerful testing framework.
+Together the tools that make up the Fennec framework provide a potent testing
+environment.
+
+The tools provided by Fennec are also useful on their own. Sometimes a tool
+created for Fennec is useful outside the greator framework. Such tools are
+turned into their own projects. This is one such project.
+
+=over 2
+
+=item L<Fennec> - The core framework
+
+The primary Fennec project that ties them all together.
+
+=back
+
+=head1 AUTHORS
+
+Chad Granum L<exodist7@gmail.com>
+
+=head1 COPYRIGHT
+
+Copyright (C) 2010 Chad Granum
+
+Child is free software; Standard perl licence.
+
+Child is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the license for more details.
View
81 lib/Child/Link/Proc.pm
@@ -59,45 +59,42 @@ sub kill {
}
1;
-=item $bool = $child->is_complete()
-Check if the child is finished (non-blocking)
+=head1 NAME
-=item $child->wait()
+Child::Link::Proc - Proc object used by L<Child>.
-Wait on the child (blocking)
+=head1 SEE ALSO
-=item $child->kill($SIG)
+This class inherits from:
-Send the $SIG signal to the child process.
+=over 4
-=item $child->read()
+=item L<Child::Link>
-Read a message from the child.
+=back
-=item $child->write( @MESSAGES )
+=head1 METHODS
-Send the messages to the child. works like print, you must add "\n".
+=over 4
-=item $child->say( @MESSAGES )
+=item $bool = $proc->is_complete()
-Send the messages to the child. works like say, adds the seperator for you
-(usually "\n").
+Check if the child is finished (non-blocking)
-=item $child->autoflush( $BOOL )
+=item $proc->wait()
-Turn autoflush on/off for the current processes write handle. This is on by
-default.
+Wait on the child (blocking)
-=item $child->flush()
+=item $proc->kill($SIG)
-Flush the current processes write handle.
+Send the $SIG signal to the child process.
-=item $child->pid()
+=item $proc->pid()
-Returns the child PID (only in parent process).
+Returns the process PID.
-=item $child->exit_status()
+=item $proc->exit_status()
Will be undef unless the process has exited, otherwise it will have the exit
status.
@@ -107,24 +104,48 @@ with extra information added. exit_status() will shift the value back for you.
That means exit_status() will return 2 whun your child calls exit(2) see
unix_exit() if you want the actual value wait() assigned to $?.
-=item $child->unix_exit()
+=item $proc->unix_exit()
When you call exit($N) the actual unix exit status will be bit shifed
with extra information added. See exit_status() if you want the actual value
used in exit() in the child.
-=item $child->code()
+=back
+
+=head1 HISTORY
+
+Most of this was part of L<Parrallel::Runner> intended for use in the L<Fennec>
+project. Fennec is being broken into multiple parts, this is one such part.
+
+=head1 FENNEC PROJECT
+
+This module is part of the Fennec project. See L<Fennec> for more details.
+Fennec is a project to develop an extendable and powerful testing framework.
+Together the tools that make up the Fennec framework provide a potent testing
+environment.
+
+The tools provided by Fennec are also useful on their own. Sometimes a tool
+created for Fennec is useful outside the greator framework. Such tools are
+turned into their own projects. This is one such project.
+
+=over 2
+
+=item L<Fennec> - The core framework
+
+The primary Fennec project that ties them all together.
-Returns the coderef used to construct the Child.
+=back
-=item $child->parent()
+=head1 AUTHORS
-Returns the parent processes PID. (Only in child)
+Chad Granum L<exodist7@gmail.com>
-=item $child->detach()
+=head1 COPYRIGHT
-Detach the child from the parent. uses POSIX::setsid(). When called in the
-child it simply calls setsid. When called from the parent the USR1 signal is
-sent to the child which triggers the child to call setsid.
+Copyright (C) 2010 Chad Granum
+Child is free software; Standard perl licence.
+Child is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the license for more details.
View
42 lib/Child/Util.pm
@@ -43,3 +43,45 @@ sub _add_accessor {
}
1;
+
+=head1 NAME
+
+Child::Util - Utility functions for L>Child>
+
+=head1 HISTORY
+
+Most of this was part of L<Parrallel::Runner> intended for use in the L<Fennec>
+project. Fennec is being broken into multiple parts, this is one such part.
+
+=head1 FENNEC PROJECT
+
+This module is part of the Fennec project. See L<Fennec> for more details.
+Fennec is a project to develop an extendable and powerful testing framework.
+Together the tools that make up the Fennec framework provide a potent testing
+environment.
+
+The tools provided by Fennec are also useful on their own. Sometimes a tool
+created for Fennec is useful outside the greator framework. Such tools are
+turned into their own projects. This is one such project.
+
+=over 2
+
+=item L<Fennec> - The core framework
+
+The primary Fennec project that ties them all together.
+
+=back
+
+=head1 AUTHORS
+
+Chad Granum L<exodist7@gmail.com>
+
+=head1 COPYRIGHT
+
+Copyright (C) 2010 Chad Granum
+
+Child is free software; Standard perl licence.
+
+Child is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the license for more details.

0 comments on commit 2440745

Please sign in to comment.
Something went wrong with that request. Please try again.