IPDR

 view release on metacpan or  search on metacpan

lib/IPDR/Collection/Client.pm  view on Meta::CPAN


sub _transpose_message_names
{
my ( $message_name ) =@_;
my $messages = _message_types();
return ${$messages}{$message_name};
}

sub _extract_session_data
{
my ( $self ) = shift;
my ( $session_data ) = shift;
my ( $session_extract ) = shift;

print "Length of session data is '".length($session_data)."'\n" if $self->{_GLOBAL}{'DEBUG'}>1;
if ( $self->{_GLOBAL}{'DEBUG'}>4 )
        {
	print "Session data segment - ";
        for($a=0;$a<length($session_data);$a++)
                {
                printf("%02x-", ord(substr($session_data,$a,2)));
                }
        print "\n";
        }
my ( $sessions_count ) = unpack("N",$session_data);
$session_data = substr($session_data,4,length($session_data)-4);

print "Sessions count '$sessions_count'\n" if $self->{_GLOBAL}{'DEBUG'}>1;
for ( my $session_decode=0; $session_decode<$sessions_count; $session_decode++ )
	{
	my ( $session_id, $reserved ) = unpack("CC",$session_data);
	my ( $sessionName ) = "";
	my ( $sessionDescription ) = "";
	my ( $ackTime ) = 0;
	my ( $ackSeq ) = 0 ;

	$session_data = substr($session_data,2,length($session_data)-2);

	( $sessionName, $session_data ) = _extract_utf8_string ( $session_data );
	( $sessionDescription, $session_data ) = _extract_utf8_string ( $session_data );
	( $ackTime, $ackSeq ) = unpack ("NN", $session_data );

	print "Session id is '$session_id'\n" if $self->{_GLOBAL}{'DEBUG'}>1;
	print "Session name is '$sessionName'\n" if $self->{_GLOBAL}{'DEBUG'}>1;
	print "Session description is '$sessionDescription'\n" if $self->{_GLOBAL}{'DEBUG'}>1;
	print "Session ackTime '$ackTime'\n" if $self->{_GLOBAL}{'DEBUG'}>1;
	print "Session ackSeq '$ackSeq'\n" if $self->{_GLOBAL}{'DEBUG'}>1;

	${$session_extract}{$session_decode}{'SessionID'} = $session_id;
	${$session_extract}{$session_decode}{'SessionName'} = $sessionName;
	${$session_extract}{$session_decode}{'SessionDescription'} = $sessionDescription;
	${$session_extract}{$session_decode}{'ackTime'} = $ackTime;
	${$session_extract}{$session_decode}{'ackSeq'} = $ackSeq;

	$session_data = substr($session_data,8,length($session_data)-8);

	}
return 1;
}

sub update_session_parameters
{
my ( $self ) = shift;
my ( $session_extract ) =  $self->{_GLOBAL}{'sessioninfo'};
my ( $debug ) = $self->{_GLOBAL}{'DEBUG'};
my ( @sessions ) = keys %{$session_extract};
my ( $session_name_lock ) = 0;

print "Session Update\n\n" if $debug>0;
print "Number of sessions is '".scalar(@sessions)."'\n" if $debug>0;

if ( $debug>0 )
	{
	if ( scalar(@sessions)>1 )
		{
		print "More than one session found. Using First.\n";
		print "Or selecting by name if configured.\n";
		}
	}

if ( length($self->{_GLOBAL}{'SessionName'})>2 )
	{
	foreach my $sessions ( keys %{$session_extract} )
		{
		if ( ${$session_extract}{$sessions}{'SessionName'} eq $self->{_GLOBAL}{'SessionName'} )
			{
			print "Session name locked to value '".$sessions."'\n" if $debug>3;
			$session_name_lock = $sessions;
			}
		}
	}

print "Session Update\n\n" if $debug>0;

print "Session name in use is '".${$session_extract}{$session_name_lock}{'SessionName'}."'\n" if $debug>0;
print "Session description in use us '".${$session_extract}{$session_name_lock}{'SessionDescription'}."'\n" if $debug>0;

$self->{_GLOBAL}{'AckSequence'} = ${$session_extract}{$session_name_lock}{'ackSeq'};
print "Setting Ack Seq to '".$self->{_GLOBAL}{'AckSequence'}."'\n" if $debug>0;

my ( $margin_time ) = ${$session_extract}{$session_name_lock}{'ackTime'}*0.05;
if ( $margin_time>15 ) { $margin_time=15; }
if ( !$self->{_GLOBAL}{'AckTime'} || $self->{_GLOBAL}{'AckTime'}==0 )
	{
	$self->{_GLOBAL}{'AckTime'} = ${$session_extract}{$session_name_lock}{'ackTime'}-$margin_time;
	print "Ack time is set to '".$self->{_GLOBAL}{'AckTime'}."'\n" if $self->{_GLOBAL}{'DEBUG'}>0;
	}

if ( !$self->{_GLOBAL}{'Session'} || $self->{_GLOBAL}{'Session'}==0 )
        {
        $self->{_GLOBAL}{'Session'} = ${$session_extract}{$session_name_lock}{'SessionID'};
        print "Session ID is set to '".$self->{_GLOBAL}{'Session'}."'\n" if $self->{_GLOBAL}{'DEBUG'}>0;
        }

print "Session Update\n\n" if $debug>0;

return 1;
}


sub _extract_template_data



( run in 1.308 second using v1.01-cache-2.11-cpan-2398b32b56e )