AC-Yenta
view release on metacpan or search on metacpan
lib/AC/Yenta/Stats.pm view on Meta::CPAN
my @peers = AC::Yenta::Status->allpeers();
$res .= sprintf("%-24s%s\n", "peers:", scalar @peers);
$res .= "\n";
return $res;
}
sub http_data {
my $url = shift;
my(undef, $map, $key, $ver) = split m|/|, $url;
my($data, $version, $file, $meta) = store_get($map, $key, $ver);
return http_notfound($url) unless $version;
return $data;
}
sub http_file {
my $url = shift;
my(undef, $map, $key, $ver) = split m|/|, $url;
my($data, $version, $file, $meta) = store_get($map, $key, $ver);
return http_notfound($url) unless $version && $file;
return $$file;
}
1;
lib/AC/Yenta/Status.pm view on Meta::CPAN
return if $ip eq $i->{ipa} && $port == $PORT;
}
return("seed/$ip:$port", $ip, $port);
}
# server list for save file
sub server_list {
my $type = shift;
($type, my $where) = split m|/|, $type;
# where - no longer used
$where ||= my_datacenter();
my @peer = keys %{ $DATA->{peertype}{$type} };
return unless @peer;
# nothing too old
@peer = grep { $DATA->{allpeer}{$_}{lastup} > $^T - $SAVEMAX } @peer;
return unless @peer;
lib/AC/Yenta/Store/Merkle.pm view on Meta::CPAN
# 10/000484D6594DB72B
sprintf '%02X/%s', $lev, $me->_ver_lev($ver, $lev);
}
sub _decode_mkey {
my $me = shift;
my $mk = shift;
# 10/000484D6594DB72B
my($l,$sv) = split m|/|, $mk, 2;
# level, shard, version
return ($l, undef, $sv);
}
sub _lkey {
my $me = shift;
my $k = shift;
my $v = shift;
my $s = shift;
# 000484D6594DB72B/foobar
return "$v/$k";
}
sub _decode_lkey {
my $me = shift;
my $lk = shift;
# 000484D6594DB72B/foobar
my($sv, $k) = split m|/|, $lk, 2;
# shard, version, key
return (undef, $sv, $k);
}
sub _ver_lev {
my $me = shift;
my $ver = shift;
my $lev = shift;
return substr($ver, 0, $lev) . ('0' x ($me->{merkle_height} - $lev));
lib/AC/Yenta/Store/Sharded.pm view on Meta::CPAN
}
return sprintf '%02X/%s:%s', $lev, $me->_shver_lev($shard, 16 + $lev - $SHARDLEN), ('0' x 16);
}
sub _decode_mkey {
my $me = shift;
my $mk = shift;
# 20/8843d7f92416211d:0000000049D2A314
my($l,$sv) = split m|/|, $mk, 2;
my($s,$v) = split /:/, $sv, 2;
return ($l, $s, $v);
}
sub _lkey {
my $me = shift;
my $k = shift;
my $v = shift;
my $s = shift;
return "$s:$v/$k";
}
sub _decode_lkey {
my $me = shift;
my $lk = shift;
# 8843d7f92416211d:0000000049D2A314/acso
my($sv, $k) = split m|/|, $lk, 2;
# shard, version, key
return ((split /:/, $sv), $k);
}
sub is_sharded {
return 1;
}
sub is_my_shard {
# XXX
( run in 1.466 second using v1.01-cache-2.11-cpan-7fcb06a456a )