<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">package DBIx::Class::Storage::DBI::Replicated::Replicant;

use Moose::Role;
requires qw/_query_start/;
with 'DBIx::Class::Storage::DBI::Replicated::WithDSN';
use MooseX::Types::Moose qw/Bool Str/;
use DBIx::Class::Storage::DBI::Replicated::Types 'DBICStorageDBI';

use namespace::clean -except =&gt; 'meta';

=head1 NAME

DBIx::Class::Storage::DBI::Replicated::Replicant - A replicated DBI Storage Role

=head1 SYNOPSIS

This class is used internally by L&lt;DBIx::Class::Storage::DBI::Replicated&gt;.

=head1 DESCRIPTION

Replicants are DBI Storages that follow a master DBI Storage.  Typically this
is accomplished via an external replication system.  Please see the documents
for L&lt;DBIx::Class::Storage::DBI::Replicated&gt; for more details.

This class exists to define methods of a DBI Storage that only make sense when
it's a classic 'slave' in a pool of slave databases which replicate from a
given master database.

=head1 ATTRIBUTES

This class defines the following attributes.

=head2 active

This is a boolean which allows you to programmatically activate or deactivate a
replicant from the pool.  This way you can do stuff like disallow a replicant
when it gets too far behind the master, if it stops replicating, etc.

This attribute DOES NOT reflect a replicant's internal status, i.e. if it is
properly replicating from a master and has not fallen too many seconds behind a
reliability threshold.  For that, use L&lt;/is_replicating&gt;  and L&lt;/lag_behind_master&gt;.
Since the implementation of those functions database specific (and not all DBIC
supported DBs support replication) you should refer your database-specific
storage driver for more information.

=cut

has 'active' =&gt; (
  is=&gt;'rw',
  isa=&gt;Bool,
  lazy=&gt;1,
  required=&gt;1,
  default=&gt;1,
);

has dsn =&gt; (is =&gt; 'rw', isa =&gt; Str);
has id  =&gt; (is =&gt; 'rw', isa =&gt; Str);

=head2 master

Reference to the master Storage.

=cut

has master =&gt; (is =&gt; 'rw', isa =&gt; DBICStorageDBI, weak_ref =&gt; 1);

=head1 METHODS

This class defines the following methods.

=head2 debugobj

Override the debugobj method to redirect this method call back to the master.

=cut

sub debugobj {
  my $self = shift;

  return $self-&gt;master-&gt;debugobj;
}

=head1 ALSO SEE

L&lt;http://en.wikipedia.org/wiki/Replicant&gt;,
L&lt;DBIx::Class::Storage::DBI::Replicated&gt;

=head1 AUTHOR

John Napiorkowski &lt;john.napiorkowski@takkle.com&gt;

=head1 LICENSE

You may distribute this code under the same terms as Perl itself.

=cut

1;
</pre></body></html>