Child - ftpDirectoryListing: 449048769
Parent: currentListing: abc.xml xyz.xml deDuppedArray: dedup1.xml dedup2.xml
Child - ftpDirectoryListing: 449049011
Parent: currentListing: abc.xml xyz.xml deDuppedArray: dedup1.xml dedup2.xml
####
Child - ftpDirectoryListing: abc.xml xyz.xml
Parent: currentListing: abc.xml xyz.xml deDuppedArray: dedup1.xml dedup2.xml
Child - ftpDirectoryListing: abc.xml xyz.xml
Parent: currentListing: abc.xml xyz.xml deDuppedArray: dedup1.xml dedup2.xml
####
#! /usr/bin/perl -w
use strict;
use lib "/nss/nfx/shmem/lib/lib";
use lib "/nss/nfx/shmem/lib/lib64";
use lib "/nss/nfx/shmem/lib/lib/perl5/site_perl/";
use File::Basename;
use Getopt::Long;
use File::Copy;
use Data::Dumper;
use strict;
use IPC::Shareable;
my $child;
my $serv_id;
my $maxRcvrCount;
my $stripeInstance;
my $maxStripeInstance;
my $user;
my @ftpDirectoryListing=();
my @deDuppedArray=();
my @filesDownloaded=();
my $glue = 'data';
my %options = (
create => 0,
exclusive => 1,
mode => 0644,
destroy => 0,
);
my $deDuppedArrayHandle = tie @deDuppedArray, 'IPC::Shareable', 'data', \%options;
my $filesDownloadedHandle = tie @filesDownloaded, 'IPC::Shareable', 'kala', \%options;
sub pollDaemonParent
{
my $user = $_[0];
my @previousListing=(); my @currentListing=();
while (1)
{
@previousListing = @currentListing;
@currentListing = getListing($user);
$deDuppedArrayHandle->shlock();
@deDuppedArray = deDupArray1(\@previousListing, \@currentListing);
print "Parent: currentListing: @currentListing deDuppedArray: @deDuppedArray\n";
$deDuppedArrayHandle->shunlock();
select (undef, undef, undef,.5);
}
}
sub pollDaemonChild
{
my $user = $_[0];
while (1)
{
@ftpDirectoryListing = ();
$deDuppedArrayHandle->shlock();
@ftpDirectoryListing = @deDuppedArray;
$deDuppedArrayHandle->shunlock();
if ($#ftpDirectoryListing >= 0)
{
print "Child - ftpDirectoryListing: @ftpDirectoryListing\n";
}
select (undef, undef, undef,1);
}
}
sub getListing
{
my @ftpListing1 = ();
push (@ftpListing1, "abc.xml");
push (@ftpListing1, "xyz.xml");
return @ftpListing1;
}
sub deDupArray1
{
my @difference = ("dedup1.xml", "dedup2.xml");
return @difference;
}
sub addToDeleteList
{
$|++;
$filesDownloadedHandle->shlock();
push (@filesDownloaded, "$_[0]");
$filesDownloadedHandle->shunlock();
}
# main
{
$user = "IAmUser";
$serv_id = "1";
$maxRcvrCount = "5";
$stripeInstance = "1" ;
$maxStripeInstance = "2";
$SIG{'ALRM'} = 'sig_alrm';
my $startingInstanceNum=1;
my @kids;
for (1 .. $maxStripeInstance)
{
$stripeInstance = $startingInstanceNum;
unless ($child = fork)
{ # i'm the child
die "cannot fork: $!" unless defined $child;
pollDaemonChild($user);
exit;
}
push @kids, $child; # in case we care about their pids
$startingInstanceNum++;
}
print "@kids\n";
pollDaemonParent($user);
}