AOL-TOC

 view release on metacpan or  search on metacpan

SFLAP.pm  view on Meta::CPAN

sub register_callback {
  my ($self, $chan, $func, @args) = @_;

  #print "register_callback() func $func for chan $chan adding to $self->{callback}{$chan}\n";
  #print "                    self $self selfcb = $self->{callback}\n";

  push (@{$self->{callback}{$chan}}, $func);
  @{$self->{callback}{$func}} = @args;

  return;
}

sub clear_callbacks {
  my ($self) = @_;
  my $k;

  print "...............C SFLAP clear_callbacks\n";
  for $k (keys %{$self->{callback}}) {
    print ".............C Clear key ($k)\n";
    delete $self->{callback}{$k};
  }

  print "...............S SFLAP scan callbacks\n";
  for $k (keys %{$self->{callback}}) {
    print ".............S Scan key ($k)\n";
  }

}

sub callback {
  my ($self, $chan, @args) = @_;
  my $func;

  for $func (@{$self->{callback}{$chan}}) {
    #print ("callback() calling a func $func for $chan fd $self->{fd}..\n");
    eval { &{$func} ($self, @args, @{$self->{callback}{$func}}) };
  }

  return;
}

sub new {
  my ($tochost, $authorizer, $port, $nickname) = @_;
  my $self;
  my $ipaddr;

  if ($port =~ /\D/) { $port = getservbyname($port, 'tcp') }
  die "invalid port" unless $port;

  $ipaddr = inet_aton($tochost);
  die "unknown host" unless $ipaddr;

  $self = {
    tochost	=> $tochost,
    authorizer	=> $authorizer,
    ipaddr	=> $ipaddr,
    port	=> $port,
    nickname	=> $nickname,
    sequence    => 1
  };
  bless($self);

  return $self;
}

sub destroy {
  my ($self) = @_;

  print "sflap destroy\n";
  CORE::close($self->{fd});

  $self = undef;

  return;
}

sub close {
  my ($self) = @_;
  my $k;

  print "sflap close\n";

  $self->clear_callbacks();

  #CORE::close($self->{fd});

  return;
}

sub set_debug {
  my ($self, $level) = @_;

  $self->{debug_level} = $level;
  print "slfap debug level $level\n";
}

sub debug {
  my ($self, @args) = @_;

  if (exists $self->{debug_level} && $self->{debug_level} > 0) {
    print @args;
  }
}

sub __connect {
  my ($self) = @_;
  my $socksaddr = inet_aton("206.223.45.1");

  my $proto = getprotobyname('tcp');
  my $sin   = sockaddr_in(1080, $socksaddr);
  my $fd    = IO::Handle->new();
 
   socket($fd, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
  connect($fd, $sin) || die "connect: $!";

  $buffer = pack("ccncccca*c", 4, 1, 443, 198, 81, 3, 52, "jamersepoo", 0);
  syswrite($fd, $buffer, 19);

  return ($fd);
}



( run in 0.529 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )