The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
=head1 NAME

Solaris::ProcessContract::Contract::Control - Control a Solaris process contract instance via libcontract

=head1 SYNOPSIS

  # Abandon the process contract
  $contract->control->abandon();

  # Adopt the process contract
  $contract->control->adopt();

  # Reset the control insance
  $contract->control->reset();

=head1 DESCRIPTION

This class allows you to control a process contract using the libcontract control interface.

=head1 METHODS

=head2 new

Use the L<Solaris::ProcessContract::Contract/"control"> to access this object
instead of creating one yourself.

  # Access the control object the easy way
  $contract->control->abandon();

  # Access the control object by reference
  my $control = $contract->control();
  $control->abandon();

=head2 abandon

Arguments: C<none>

Returns: C<undef>

Abandon the contract so that it no longer is in the same contract group as the
parent.

  $contract->control->abandon();

Even when creating new contracts for child processes, those contracts are still
underneath the parent's contract in the contract hierarchy.

By abandoning the contract, you will be placing it at the top of it's own 
hierarchy, and any monitoring, event triggers or resource limitations from
processes in the contract will no longer affect your own.

=head2 adopt

Arguments: C<none>

Returns: C<undef>

Adopt the contract so that it is returned to your contract group.

  $contract->control->adopt();

This is the opposite of L</"abandon">, in that it will bring an abandoned
contract back in to your contract hierarchy.

=head2 reset

Arguments: C<none>

Returns: C<undef>

Reset the contract control object, if needed.  This will make the control object
close and then open back up the file descriptor for the contract control
instance.

  $contract->control->reset()

=head1 SEE ALSO

=over

=item L<Solaris::ProcessContract>

=item L<Solaris::ProcessContract::Contract>

=item L<Solaris::ProcessContract::Exceptions>

=item L<libcontract(3)|http://docs.oracle.com/cd/E26505_01/html/816-5173/libcontract-3lib.html>

=item L<contract(4)|http://docs.oracle.com/cd/E26505_01/html/816-5174/contract-4.html>

=item L<process(4)|http://docs.oracle.com/cd/E26505_01/html/816-5174/process-4.html>

=back

=head1 AUTHOR

Danny Warren