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