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 )