OurNet-BBS

 view release on metacpan or  search on metacpan

lib/OurNet/BBS/MAPLE2/BoardGroup.pm  view on Meta::CPAN


sub shminit {
    my $self = shift;

    if ($^O ne 'MSWin32' and
        $self->{shmid} = shmget($self->{shmkey}, $self->{maxboard} * $packsize + 16, 0)) {
        tie $self->{shm}{touchtime}, 'OurNet::BBS::ShmScalar',
	    $self->{shmid}, $self->{maxboard}*$packsize +  4, 4, 'L';
        tie $self->{shm}{number}, 'OurNet::BBS::ShmScalar',
            $self->{shmid}, $self->{maxboard}*$packsize +  8, 4, 'L';
        tie $self->{shm}{busystate}, 'OurNet::BBS::ShmScalar',
            $self->{shmid}, $self->{maxboard}*$packsize + 12, 4, 'L';
    }
}

# Fetch key: id savemode author date title filemode body
sub refresh_meta {
    my ($self, $key) = @_;

    my $file = "$self->{bbsroot}/$BRD";
    my $board;

lib/OurNet/BBS/MAPLE2/SessionGroup.pm  view on Meta::CPAN

sub shminit {
    my $self = shift;

    if ($^O ne 'MSWin32' and
	$self->{shmid} = shmget($self->{shmkey},
				($self->{maxsession})*$packsize+36, 0)) {
      tie $self->{shm}{uptime}, 'OurNet::BBS::ShmScalar',
	$self->{shmid}, $self->{maxsession}*$packsize, 4, 'L';
      tie $self->{_hash}{number}, 'OurNet::BBS::ShmScalar',
	$self->{shmid}, $self->{maxsession}*$packsize+4, 4, 'L';
      tie $self->{shm}{busystate}, 'OurNet::BBS::ShmScalar',
	$self->{shmid}, $self->{maxsession}*$packsize+8, 4, 'L';
      $instances{$self} = $self;
    }
}

sub refresh_meta {
    my ($self, $key) = @_;

    $self->shminit unless ($self->{shmid} || !$self->{shmkey});

lib/OurNet/BBS/MAPLE2/UserGroup.pm  view on Meta::CPAN

            # print "key: $self->{shmkey}\n";
            # print "maxuser: $self->{maxuser}\n";
            tie $self->{shm}{userlist}, 'OurNet::BBS::ShmScalar',
                $self->{shmid}, 0, $namesize, $self->{maxuser} * $namesize, 'Z$namesize';
            tie $self->{shm}{uptime}, 'OurNet::BBS::ShmScalar',
                $self->{shmid}, $self->{maxuser} * $namesize,      4, 'L';
            tie $self->{shm}{touchtime}, 'OurNet::BBS::ShmScalar',
                $self->{shmid}, $self->{maxuser} * $namesize +  4, 4, 'L';
            tie $self->{_hash}{number}, 'OurNet::BBS::ShmScalar',
                $self->{shmid}, $self->{maxuser} * $namesize +  8, 4, 'L';
            tie $self->{shm}{busystate}, 'OurNet::BBS::ShmScalar',
                $self->{shmid}, $self->{maxuser} * $namesize + 12, 4, 'L';
        }
    }

    my $name;
    if ($self->{shmid}) {
	# shm-based imeplementation
	if ($key and $flag == HASH) {
            # key fetch
            return if $self->{_hash}{$key} or !$self->{maxuser};



( run in 0.389 second using v1.01-cache-2.11-cpan-3cd7ad12f66 )