/usr/local/CPAN/ObjStore-REP-Ring/ObjStore/REP/Ring.pm
use strict;
package ObjStore::REP::Ring;
use base 'DynaLoader';
use vars qw($VERSION);
$VERSION = '0.02';
__PACKAGE__->bootstrap($VERSION);
$ObjStore::SCHEMA{'ObjStore::REP::Ring'}->
load($ObjStore::Config::SCHEMA_DBDIR."/REP-Ring-01.adb");
package ObjStore::REP::Ring::Index;
use Carp;
use ObjStore;
# [0] version
# [1] path
# [2] descending
sub configure {
my $o = shift;
my $c = _conf_slot($o);
$c ||= (__PACKAGE__.'::Conf')->new($o, [1,[],0]);
return $c if @_ == 0;
my @conf = ref $_[0] ? %{$_[0]} : @_;
while (@conf) {
my ($k,$v) = splice @conf, 0, 2;
if ($k eq 'path') {
$c->[1] = ObjStore::PathExam::Path->new($c, $v);
} elsif ($k eq 'descending') {
$c->[2] = $v?1:0;
} else {
carp "$o->configure: unknown parameter '$k' (ignored)";
}
}
_conf_slot($o, $c);
}
sub index_path {
my ($o) = @_;
my $c = _conf_slot($o);
$c? $c->[1] : undef;
}
package ObjStore::REP::Ring::Index::Conf;
use base 'ObjStore::AV';
sub POSH_PEEK {
my ($c, $p) = @_;
$p->o("(".$c->[1]->stringify().")");
}
1;