Apache2-SSI
view release on metacpan or search on metacpan
lib/Apache2/SSI/SharedMem.pm view on Meta::CPAN
}
elsif( $key =~ /^\d+$/ )
{
return( IPC::SysV::ftok( __FILE__, $key ) );
}
else
{
my $id = 0;
$id += $_ for( unpack( "C*", $key ) );
# We use the root as a reliable and stable path.
# I initially though about using __FILE__, but during testing this would be in ./blib/lib and beside one user might use a version of this module somewhere while the one used under Apache/mod_perl2 could be somewhere else and this would render...
my $val = IPC::SysV::ftok( '/', $id );
return( $val );
}
}
END
{
foreach my $id ( keys( %$SHEM_REPO ) )
{
my $s = $SHEM_REPO->{ $id };
$s->unlock;
next unless( $s->destroy );
next unless( $s->owner == $$ );
$s->remove;
}
};
# DESTROY
# {
# my $self = shift( @_ );
# my @callinfo = caller;
# ## $self->message( 3, "Got here from package $callinfo[0] in file $callinfo[1] at line $callinfo[2], destroying object for shared memory id \"", $self->id, "\" key \"", $self->key, "\" with destroy flags '", $self->destroy, "'." );
# ## $self->message( 3, "Object contains following keys: ", sub{ $self->dump( $self ) } );
# $self->unlock;
# $self->remove if( $self->destroy );
# };
{
package
Apache2::SSI::SemStat;
our $VERSION = 'v0.1.0';
use constant UID => 0;
use constant GID => 1;
use constant CUID => 2;
use constant CGID => 3;
use constant MODE => 4;
use constant CTIME => 5;
use constant OTIME => 6;
use constant NSEMS => 7;
sub new
{
my $this = shift( @_ );
my @vals = @_;
return( bless( [ @vals ] => ref( $this ) || $this ) );
}
sub cgid { return( shift->[CGID] ); }
sub ctime { return( shift->[CTIME] ); }
sub cuid { return( shift->[CUID] ); }
sub gid { return( shift->[GID] ); }
sub mode { return( shift->[MODE] ); }
sub nsems { return( shift->[NSEMS] ); }
sub otime { return( shift->[OTIME] ); }
sub uid { return( shift->[UID] ); }
}
1;
( run in 0.662 second using v1.01-cache-2.11-cpan-5735350b133 )