SyslogScan::Usage - encapsulates the total volumes of mail broadcast,


SyslogScan documentation Contained in the SyslogScan distribution.

Index


Code Index:

NAME

Top

SyslogScan::Usage -- encapsulates the total volumes of mail broadcast, sent, and received through sendmail by a single user or group.

SyslogScan::Volume -- encapsulates a number of messages along with a total number of bytes

SYNOPSIS

Top

# $summary is a SyslogScan::Summary object

use SyslogScan::Usage; my $usage = $$summary{'john_doe@foo.com'}; $usage -> dump();

use SyslogScan::Volume; my $broadcastVolume = $usage -> getBroadcastVolume(); my $sendVolume = $usage -> getSendVolume(); my $receiveVolume = $usage -> getReceiveVolume();

print "John Doe sent $$sendVolume[0] messages with $$sendVolume[1] bytes\n";

DESCRIPTION

Top

Broadcast, Send, and Receive

Volume of messages received has the obvious meaning. Volume of messages sent and volume of messages broadcast require more explanation.

If I send out a message which has three recipients, then for the purposes of the SyslogScan modules, I am broadcasting the message once, but I am sending it three times.

Usage methods

new() method

Creates a new, empty Usage object.

addUsage() method and deepCopy() method
   # $usage1 is 4 messages of 100 bytes Received
   # $usage2 is 1 message of 35 bytes Received

   my $usageTotal = $usage1 -> deepCopy();
   # $usageTotal is 4 messages of 100 bytes Received

   $usageTotal -> addUsage($usage2);
   # $usageTotal is 5 messages of 135 bytes Received

Note that because we used deepCopy, $usage1 is still 4 messages of 100 bytes.

registerBroadcast, registerSend, registerReceive methods
    my $usage = new SyslogScan::Usage();
    $usage -> registerSend(512);
    $usage -> registerSend(34);
    $usage -> registerBroadcast(34);
    # $usage is now 2 messages, 546 bytes Sent,
    # and 1 message, 34 bytes Broadcast

getBroadcastVolume, getSendVolume, getReceiveVolume methods

Returns deep copy of the applicable SyslogScan::Volume objects.

static deepCopy method

Returns deep copy of the whole SyslogScan::Usage object.

static dump

Returns a string containing (Message,Bytes) pairs for Broadcast, Send, and Receive volumes.

Volume methods

new() method

Creates a new Volume object of 0 messages, 0 bytes.

deepCopy() method

Creates a new Volume object with the same number of messages and bytes as the current Volume object.

addVolume(), addSize() methods

addVolume() adds the volume of a second Volume object onto the volume of the current Volume object.

addSize() adds on one message of the given size.

    use SyslogScan::Volume;

    my $volume1 = new SyslogScan::Volume();
    $volume1 -> addSize(512);

    my $volume2 = $volume1 -> deepCopy();
    # $volume2 is 1 message, 512 bytes

    $volume2 -> addSize(31);
    # $volume2 is 2 messages, 543 bytes

    $volume2 -> addVolume($volume1);
    # $volume2 is 3 messages, 1055 bytes

    $volume2 -> addVolume($volume2);
    # $volume2 is 6 messages, 2110 bytes

getMessageCount, getByteCount

Gets the number of messages and the total number of bytes, respectively.

dump()

Returns the string "getMessageCount(),getByteCount()"

Volume internals

A Volume is simply a two-element array of ($messages, $bytes).

$$volume[0] is the number of messages $$volume[1] is the number of bytes

AUTHOR and COPYRIGHT

Top

SEE ALSO

Top

SyslogScan::Summary


SyslogScan documentation Contained in the SyslogScan distribution.

package SyslogScan::Usage;

$VERSION = 0.20;
sub Version { $VERSION };

use SyslogScan::Volume;

my $SEND = 0;
my $RECEIVE = 1;
my $BROADCAST = 2;

my @ROLE_LIST = ($BROADCAST,$SEND,$RECEIVE);

use strict;

sub new
{
    my $type = shift;

    my $self = ();

    my $role;
    foreach $role (@ROLE_LIST)
    {
	$$self[$role] = new SyslogScan::Volume;
    }
    bless($self,$type);
    return $self;
}

sub addUsage
{
    my $self = shift;
    my $other = shift;
    my $role;
    foreach $role (@ROLE_LIST)
    {
	$$self[$role] -> addVolume($$other[$role]);
    }
}

sub registerSend
{
    my $self = shift;
    my $size = shift;
    
    $self -> register($size,$SEND);
}

sub registerReceive
{
    my $self = shift;
    my $size = shift;
    
    $self -> register($size,$RECEIVE);
}

sub registerBroadcast
{
    my $self = shift;
    my $size = shift;
    
    $self -> register($size,$BROADCAST);
}

sub getBroadcastVolume
{
    my $self = shift;
    return $$self[$BROADCAST] -> deepCopy();
}

sub getSendVolume
{
    my $self = shift;
    return $$self[$SEND] -> deepCopy();
}

sub getReceiveVolume
{
    my $self = shift;
    return $$self[$RECEIVE] -> deepCopy();
}

sub register
{
    my $self = shift;
    my $size = shift;
    my $role = shift;

    defined($$self[$role]) or
	die "illegal Role: $role";

    $$self[$role] -> addSize($size);
}

sub persist
{
    my $self = shift;
    my $outFH = shift;

    my $role;
    foreach $role (@ROLE_LIST)
    {
	$$self[$role] -> persist($outFH);
    }
}

sub restore
{
    my $type = shift;
    my $inFH = shift;

    my $self = ();

    my $role;
    foreach $role (@ROLE_LIST)
    {
	$$self[$role] =
	  SyslogScan::Volume -> restore($inFH);
    }

    bless($self,$type);

    return $self;
}

sub dump
{
    my $self = shift;
    my $retString;

    my $role;
    foreach $role (@ROLE_LIST)
    {
	$retString .= "\t\t". $$self[$role] -> dump();
    }
    return $retString."\n";
}

sub deepCopy
{
    my $self = shift;
    my $copy = ();
    
    my $role;
    foreach $role (@ROLE_LIST)
    {
	$$copy[$role] = $$self[$role] -> deepCopy();
    }

    bless($copy,ref($self));
    return $copy;
}

1;

__END__