spelling fixes in the documaentation, sholud be gud now ;)
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / Replicated / Replicant.pm
1 package DBIx::Class::Storage::DBI::Replicated::Replicant;
2
3 use Moose::Role;
4 requires qw/_query_start/;
5 with 'DBIx::Class::Storage::DBI::Replicated::WithDSN';
6 use MooseX::Types::Moose qw/Bool Str/;
7 use DBIx::Class::Storage::DBI::Replicated::Types 'DBICStorageDBI';
8
9 use namespace::clean -except => 'meta';
10
11 =head1 NAME
12
13 DBIx::Class::Storage::DBI::Replicated::Replicant - A replicated DBI Storage Role
14
15 =head1 SYNOPSIS
16
17 This class is used internally by L<DBIx::Class::Storage::DBI::Replicated>.
18
19 =head1 DESCRIPTION
20
21 Replicants are DBI Storages that follow a master DBI Storage.  Typically this
22 is accomplished via an external replication system.  Please see the documents
23 for L<DBIx::Class::Storage::DBI::Replicated> for more details.
24
25 This class exists to define methods of a DBI Storage that only make sense when
26 it's a classic 'slave' in a pool of slave databases which replicate from a
27 given master database.
28
29 =head1 ATTRIBUTES
30
31 This class defines the following attributes.
32
33 =head2 active
34
35 This is a boolean which allows you to programmatically activate or deactivate a
36 replicant from the pool.  This way you can do stuff like disallow a replicant
37 when it gets too far behind the master, if it stops replicating, etc.
38
39 This attribute DOES NOT reflect a replicant's internal status, i.e. if it is
40 properly replicating from a master and has not fallen too many seconds behind a
41 reliability threshold.  For that, use L</is_replicating>  and L</lag_behind_master>.
42 Since the implementation of those functions database specific (and not all DBIC
43 supported DBs support replication) you should refer your database-specific
44 storage driver for more information.
45
46 =cut
47
48 has 'active' => (
49   is=>'rw',
50   isa=>Bool,
51   lazy=>1,
52   required=>1,
53   default=>1,
54 );
55
56 has dsn => (is => 'rw', isa => Str);
57 has id  => (is => 'rw', isa => Str);
58
59 =head2 master
60
61 Reference to the master Storage.
62
63 =cut
64
65 has master => (is => 'rw', isa => DBICStorageDBI, weak_ref => 1);
66
67 =head1 METHODS
68
69 This class defines the following methods.
70
71 =head2 debugobj
72
73 Override the debugobj method to redirect this method call back to the master.
74
75 =cut
76
77 sub debugobj {
78   my $self = shift;
79
80   return $self->master->debugobj;
81 }
82
83 =head1 ALSO SEE
84
85 L<http://en.wikipedia.org/wiki/Replicant>,
86 L<DBIx::Class::Storage::DBI::Replicated>
87
88 =head1 AUTHOR
89
90 John Napiorkowski <john.napiorkowski@takkle.com>
91
92 =head1 LICENSE
93
94 You may distribute this code under the same terms as Perl itself.
95
96 =cut
97
98 1;