AOL-TOC

 view release on metacpan or  search on metacpan

SFLAP.pm  view on Meta::CPAN

  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);
}

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

  my $proto = getprotobyname('tcp');
  my $sin   = sockaddr_in($self->{port}, $self->{ipaddr});
  my $fd    = IO::Handle->new();

   socket($fd, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
  connect($fd, $sin) || die "connect: $!";

  return ($fd);
}

sub connect {
  my ($self) = @_;
  my $fd;

  if ($self->{proxy}) {
    $fd = &{$self->{proxy}};
  } else {
    $fd = $self->_connect;
  }

  $self->{fd} = $fd;

  $foo = $self->write("FLAPON\r\n\r\n", 10);

  $self->recv();

  return $fd;
}

sub recv {
  my ($self) = @_;
  my ($buffer, $from, $xfrom) = '';
  my ($fd) = $self->{fd};

  $foo = CORE::sysread($fd, $buffer, 6);
  if ($foo <= 0) {
    #print "recv failed! calling signoff....\n";
    $self->callback($SFLAP_SIGNOFF);
    return;
  }

  my ($id, $chan, $seq, $len, $data) = unpack("aCnn", $buffer);
  $self->debug("sflap recv ($self->{fd}) $foo chan = $chan seq = $seq len = $len\n");

  $foo = CORE::sysread($fd, $data, $len);
  $self->debug("      data = $data\n");

  $self->callback($chan, $data);

  return $buffer;
}

sub send {
  my ($self, $chan, $data, $length) = @_;
  my $buffer;
  my $format;

  if (!$length) {
    $length = length($data);
  }

  if ($chan == $SFLAP_DATA) {
    $format = "cCnna*C";
    $length ++;
  } else {
    $format = "cCnna*";
  }

  $self->{sequence} ++;
  $buffer = pack($format, 42, $chan, $self->{sequence},
                          $length, $data, 0);

  ($id, $ch, $seq, $len, $data, $nuller) = unpack($format, $buffer);

  $foo = CORE::syswrite($self->{fd}, $buffer, $length + 6);
  $self->debug("sflap send ($self->{fd}) $foo chan = $ch seq = $seq len = $len data = $data\n");
}

sub write {
  my ($self, $buffer, $len, $noflap) = @_;
  my $fd = $self->{fd};

  return CORE::syswrite($fd, $buffer, $len);
}

sub flush {
  my $self = shift;
}

1;



( run in 1.755 second using v1.01-cache-2.11-cpan-39bf76dae61 )