X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FReplicated%2FReplicant.pm;h=7c6084b1436017ff9c20cbc56ba356f40308abd7;hb=a2bd379666d729133d65c85dc775627937084b18;hp=e1e7f8d537be6ad347396aa56bf938fcab199f1d;hpb=de5dc9efd2c3575f78a7dc71c50d571c9a17c38d;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Replicated/Replicant.pm b/lib/DBIx/Class/Storage/DBI/Replicated/Replicant.pm index e1e7f8d..7c6084b 100644 --- a/lib/DBIx/Class/Storage/DBI/Replicated/Replicant.pm +++ b/lib/DBIx/Class/Storage/DBI/Replicated/Replicant.pm @@ -1,15 +1,21 @@ 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 => 'meta'; =head1 NAME -DBIx::Class::Storage::DBI::Replicated::Replicant; A replicated DBI Storage Role +DBIx::Class::Storage::DBI::Replicated::Replicant - A replicated DBI Storage Role =head1 SYNOPSIS This class is used internally by L. - + =head1 DESCRIPTION Replicants are DBI Storages that follow a master DBI Storage. Typically this @@ -27,51 +33,71 @@ 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 to you do stuff like disallow a replicant -when it get's too far behind the master, if it stops replicating, etc. +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 and L. +reliability threshold. For that, use +L and +L. Since the implementation of those functions database specific (and not all DBIC -supported DB's support replication) you should refer your database specific +supported DBs support replication) you should refer your database-specific storage driver for more information. =cut has 'active' => ( - is=>'rw', - isa=>'Bool', - lazy=>1, - required=>1, - default=>1, + is=>'rw', + isa=>Bool, + lazy=>1, + required=>1, + default=>1, ); +has dsn => (is => 'rw', isa => Str); +has id => (is => 'rw', isa => Str); + +=head2 master + +Reference to the master Storage. + +=cut + +has master => (is => 'rw', isa => DBICStorageDBI, weak_ref => 1); + =head1 METHODS This class defines the following methods. -=head2 after: _query_start +=head2 debugobj -advice iof the _query_start method to add more debuggin +Override the debugobj method to redirect this method call back to the master. =cut -around '_query_start' => sub { - my ($method, $self, $sql, @bind) = @_; - my $dsn = $self->connect_info->[0]; - $self->$method("DSN: $dsn SQL: $sql", @bind); -}; +sub debugobj { + my $self = shift; + + return $self->master->debugobj; +} + +=head1 ALSO SEE +L, +L -=head1 AUTHOR +=head1 FURTHER QUESTIONS? -John Napiorkowski +Check the list of L. -=head1 LICENSE +=head1 COPYRIGHT AND LICENSE -You may distribute this code under the same terms as Perl itself. +This module is free software L +by the L. You can +redistribute it and/or modify it under the same terms as the +L. =cut -1; \ No newline at end of file +1;