X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FReplicated%2FReplicant.pm;h=08a95ef1c6e0c6c9c429d321b824ffa99de945c2;hb=b09e9528b306fe3394ad0b588c36ebbc2b89c6fb;hp=22ca9fe63c2fe98ee1161ba74ba6af1bf895d12b;hpb=26ab719a4d6ee414537c815677b9884b64417539;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/Storage/DBI/Replicated/Replicant.pm b/lib/DBIx/Class/Storage/DBI/Replicated/Replicant.pm index 22ca9fe..08a95ef 100644 --- a/lib/DBIx/Class/Storage/DBI/Replicated/Replicant.pm +++ b/lib/DBIx/Class/Storage/DBI/Replicated/Replicant.pm @@ -1,17 +1,20 @@ package DBIx::Class::Storage::DBI::Replicated::Replicant; -use Moose; -extends 'DBIx::Class::Storage::DBI', 'Moose::Object'; +use Moose::Role; +requires qw/_query_start/; +with 'DBIx::Class::Storage::DBI::Replicated::WithDSN'; +use MooseX::Types::Moose qw/Bool Str/; + +use namespace::clean -except => 'meta'; =head1 NAME -DBIx::Class::Storage::DBI::Replicated::Replicant; A replicated DBI Storage +DBIx::Class::Storage::DBI::Replicated::Replicant - A replicated DBI Storage Role =head1 SYNOPSIS -This class is used internally by L. You -shouldn't need to create instances of this class. - +This class is used internally by L. + =head1 DESCRIPTION Replicants are DBI Storages that follow a master DBI Storage. Typically this @@ -26,10 +29,51 @@ given master database. 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. + +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. +Since the implementation of those functions database specific (and not all DBIC +supported DB's 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, +); + +has dsn => (is => 'rw', isa => Str); +has id => (is => 'rw', isa => Str); + =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 { + return shift->schema->storage->debugobj; +} + +=head1 ALSO SEE + +L, +L + =head1 AUTHOR John Napiorkowski @@ -38,4 +82,6 @@ John Napiorkowski You may distribute this code under the same terms as Perl itself. -=cut \ No newline at end of file +=cut + +1;