Quota-OO
view release on metacpan or search on metacpan
lib/Quota/OO.pm view on Meta::CPAN
package Quota::OO;
use strict;
use warnings;
use version;our $VERSION = qv('0.0.1');
use Class::Std;
use Class::Std::Utils;
use Quota;
{
my %dev :ATTR('set' => 'dev', 'get' => 'dev', 'init_arg' => 'dev');
my %uid :ATTR('set' => 'uid', 'get' => 'uid', 'init_arg' => 'uid');
my %gid :ATTR('set' => 'gid', 'get' => 'gid', 'init_arg' => 'gid');
my %rpc_host :ATTR('set' => 'rpc_host', 'get' => 'rpc_host', 'init_arg' => 'rpc_host');
my %rpc_path :ATTR('set' => 'rpc_path', 'get' => 'rpc_path', 'init_arg' => 'rpc_path');
my %rpc_port :ATTR('set' => 'rpc_port', 'get' => 'rpc_port', 'init_arg' => 'rpc_port');
my %rpc_uid :ATTR('set' => 'rpc_uid', 'get' => 'rpc_uid', 'init_arg' => 'rpc_uid');
my %rpc_gid :ATTR('set' => 'rpc_gid', 'get' => 'rpc_gid', 'init_arg' => 'rpc_gid');
my %rpc_use_tcp :ATTR('set' => 'rpc_use_tcp', 'get' => 'rpc_use_tcp', 'init_arg' => 'rpc_use_tcp');
my %rpc_timeout :ATTR('set' => 'rpc_timeout', 'get' => 'rpc_timeout', 'init_arg' => 'rpc_timeout');
sub BUILD {
my ($self, $obj_id, $arg_ref) = @_;
$dev{$obj_id} = $self->set_dev( $arg_ref->{'dev'} );
$uid{$obj_id} = $self->set_uid( $arg_ref->{'uid'} );
$gid{$obj_id} = $self->set_gid( $arg_ref->{'gid'} );
}
sub set_dev {
my ($self, $dev) = @_;
$dev{ ident $self } = $self->getqcarg($dev);
}
sub set_uid {
my ($self, $uid) = @_;
$uid{ ident $self } = $uid =~ m{^\d+$} ? $uid : $>;
}
sub set_gid {
my ($self, $gid) = @_;
$gid{ ident $self }
= $gid =~ m{^\d+$} ? $gid : ( getpwuid($uid{ ident $self }) )[3];
}
#### do rcp* ##
#### Quota::rpcquery ##
sub rpcquery {
my ($self, $host, $path, $uid) = @_;
Quota::rpcquery(
defined $host ? $host : $rpc_host{ ident $self },
defined $path ? $path : $rpc_path{ ident $self },
defined $uid ? $uid : $rpc_uid{ ident $self },
);
}
#### Quota::rpcpeer ##
sub rpcpeer {
my ($self, $port, $use_tcp, $timeout) = @_;
Quota::rpcpeer(
defined $port ? $port : $rpc_port{ ident $self },
defined $use_tcp ? $use_tcp : $rpc_use_tcp{ ident $self },
defined $timeout ? $timeout : $rpc_timeout{ ident $self },
);
}
#### Quota::rpcauth ##
sub rpcauth {
my ($self, $uid, $gid, $ host) = @_;
Quota::rpcauth(
defined $uid ? $uid : $rpc_uid{ ident $self },
defined $gid ? $gid : $rpc_gid{ ident $self },
defined $host ? $host : $rpc_host{ ident $self },
);
}
sub get_rpc_query {
my ($self, $args_hr) = @_;
$self->rpcpeer(
$args_hr->{'rpc_port'},
$args_hr->{'rpc_use_tcp'},
$args_hr->{'rpc_timeout'},
);
$self->rpcauth(
$args_hr->{'rpc_uid'},
$args_hr->{'rpc_gid'},
$args_hr->{'rpc_host'},
);
my @rpc_results = $self->rcpquery(
$args_hr->{'rpc_host'},
$args_hr->{'rpc_path'},
$args_hr->{'rpc_uid'},
);
return wantarray ? @rpc_results : \@rpc_results;
}
( run in 2.303 seconds using v1.01-cache-2.11-cpan-5735350b133 )