--- trunk/Estraier.pm 2006/05/15 22:26:08 150 +++ trunk/Estraier.pm 2006/06/24 15:34:42 160 @@ -4,7 +4,7 @@ use strict; use warnings; -our $VERSION = '0.07_1'; +our $VERSION = '0.07_2'; =head1 NAME @@ -1053,7 +1053,7 @@ $node->put_doc( $document_draft ) or die "can't add document"; -Return true on success or false on failture. +Return true on success or false on failure. =cut @@ -1061,11 +1061,15 @@ my $self = shift; my $doc = shift || return; return unless ($self->{url} && $doc->isa('Search::Estraier::Document')); - $self->shuttle_url( $self->{url} . '/put_doc', + if ($self->shuttle_url( $self->{url} . '/put_doc', 'text/x-estraier-draft', $doc->dump_draft, undef - ) == 200; + ) == 200) { + $self->_clear_info; + return 1; + } + return undef; } @@ -1089,8 +1093,8 @@ "id=$id", undef ) == 200) { - $self->_set_info; - return $id; + $self->_clear_info; + return 1; } return undef; } @@ -1115,8 +1119,8 @@ "uri=" . uri_escape($uri), undef ) == 200) { - $self->_set_info; - return $uri; + $self->_clear_info; + return 1; } return undef; } @@ -1136,11 +1140,15 @@ my $self = shift; my $doc = shift || return; return unless ($self->{url} && $doc->isa('Search::Estraier::Document')); - $self->shuttle_url( $self->{url} . '/edit_doc', + if ($self->shuttle_url( $self->{url} . '/edit_doc', 'text/x-estraier-draft', $doc->dump_draft, undef - ) == 200; + ) == 200) { + $self->_clear_info; + return 1; + } + return undef; } @@ -1507,7 +1515,7 @@ push @args, 'wwidth=' . $self->{wwidth}; push @args, 'hwidth=' . $self->{hwidth}; push @args, 'awidth=' . $self->{awidth}; - push @args, 'skip=' . $self->{skip} if ($self->{skip}); + push @args, 'skip=' . $cond->{skip} if ($cond->{skip}); return join('&', @args); } @@ -1654,7 +1662,7 @@ croak "mode must be number, not '$mode'" unless ($mode =~ m/^\d+$/); $self->shuttle_url( $self->{url} . '/_set_user', - 'text/plain', + 'application/x-www-form-urlencoded', 'name=' . uri_escape($name) . '&mode=' . $mode, undef ) == 200; @@ -1687,7 +1695,7 @@ undef ) == 200) { # refresh node info after adding link - $self->_set_info; + $self->_clear_info; return 1; } return undef; @@ -1735,6 +1743,31 @@ return $self->{inform}->{links}; } +=head2 cacheusage + +Return cache usage for a node + + my $cache = $node->cacheusage; + +=cut + +sub cacheusage { + my $self = shift; + + return unless ($self->{url}); + + my $resbody; + my $rv = $self->shuttle_url( $self->{url} . '/cacheusage', + 'text/plain', + undef, + \$resbody, + ); + + return if ($rv != 200 || !$resbody); + + return $resbody; +} + =head2 master Set actions on Hyper Estraier node master (C process) @@ -1839,7 +1872,7 @@ if ($status == $rest->{status}) { # refresh node info after sync - $self->_set_info if ($action eq 'sync'); + $self->_clear_info if ($action eq 'sync' || $action =~ m/^node(?:add|del|clr)$/); if ($rest->{returns} && wantarray) { @@ -1898,7 +1931,7 @@ my @lines = split(/[\r\n]/,$resbody); - $self->{inform} = {}; + $self->_clear_info; ( $self->{inform}->{name}, $self->{inform}->{label}, $self->{inform}->{dnum}, $self->{inform}->{wnum}, $self->{inform}->{size} ) = split(/\t/, shift @lines, 5); @@ -1923,6 +1956,25 @@ } +=head2 _clear_info + +Clear information for node + + $node->_clear_info; + +On next call to C, C