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 )