/usr/share/perl5/Redis/Sentinel.pm is in libredis-perl 2:1.9760-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | #
# This file is part of Redis
#
# This software is Copyright (c) 2013 by Pedro Melo, Damien Krotkine.
#
# This is free software, licensed under:
#
# The Artistic License 2.0 (GPL Compatible)
#
package Redis::Sentinel;
{
$Redis::Sentinel::VERSION = '1.976';
}
# ABSTRACT: Redis Sentinel interface
use warnings;
use strict;
use Carp;
use base qw(Redis);
sub new {
my ($class, %args) = @_;
# these args are not allowed when contacting a sentinel
delete @args{qw(sentinels service)};
$class->SUPER::new(%args);
}
sub get_service_address {
my ($self, $service) = @_;
my ($ip, $port) = $self->sentinel('get-master-addr-by-name', $service);
defined $ip
or return;
$ip eq 'IDONTKNOW'
and return $ip;
return "$ip:$port";
}
sub get_masters {
map { +{ @$_ }; } @{ shift->sentinel('masters') || [] };
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Redis::Sentinel - Redis Sentinel interface
=head1 VERSION
version 1.976
=head1 SYNOPSIS
my $sentinel = Redis::Sentinel->new( ... );
my $service_address = $sentinel->get_service_address('mymaster');
my @masters = $sentinel->get_masters;
=head1 DESCRIPTION
This is a subclass of the Redis module, specialized into connecting to a
Sentinel instance. Inherits from the C<Redis> package;
=head1 CONSTRUCTOR
=head2 new
See C<new> in L<Redis.pm>. All parameters are supported, except C<sentinels>
and C<service>, which are silently ignored.
=head1 METHODS
All the methods of the C<Redis> package are supported, plus the additional following methods:
=head2 get_service_address
Takes the name of a service as parameter, and returns either void (emptly list)
if the master couldn't be found, the string 'IDONTKNOW' if the service is in
the sentinel config but cannot be reached, or the string C<"$ip:$port"> if the
service were found.
=head2 get_masters
Returns a list of HashRefs representing all the master redis instances that
this sentinel monitors.
=head1 AUTHORS
=over 4
=item *
Pedro Melo <melo@cpan.org>
=item *
Damien Krotkine <dams@cpan.org>
=back
=head1 COPYRIGHT AND LICENSE
This software is Copyright (c) 2013 by Pedro Melo, Damien Krotkine.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)
=cut
|