Lo,
AxKit2.
Well, I've finally got round to farming out the slow bits of my app.
Atm it's using Net::Server, but I am going to look at gearmand shortly.
Anyway, as it's the first time I've used sockets, could someone have a
look at my first hack and tell me what I'm missing please?
I essentially serialise a hash and the other end sends back xml.
I have a simple xmlresponse hook. It calls various methods in
the Firstb2b::Acme class, the method I'm testing with is below.
Acme "uses" Firstb2b::AxKit2::SubprocessEvent, which is also below.
Qu:
1) $bbref should be stored somewhere, but where? I presume in the notes
of something. If this is correct, which notes and how do I get them?
I suppose Ax2/Danga somehow maintains a list of watched fds along with a
persitent data structure?
2) What does the callback of addotherfds do? I can't get it to fire.
sub _state_login {
my Firstb2b::Acme $self = shift;
$self->{plugin}->log(LOGDEBUG, "\n\nHERE\n\n");
my $PORT = 2000;
my $sock = IO::Socket::INET->new(
PeerHost => 'localhost',
PeerPort => $PORT,
Proto => 'tcp',
Type => SOCK_STREAM,
Blocking => 0,
)
or die "Error creating client on port $PORT : [EMAIL
PROTECTED]";
IO::Handle::blocking( $sock, 0 );
my $var = Firstb2b::AxKit2::SubprocessEvent->new($sock);
$var->watch_read(1);
my $cb = sub { die
'YAYAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'; };
$var->AddOtherFds( fileno($sock) => $cb );
$var->write( freeze( { method => 'state_login' } ) . 'ROSE' . EOL );
#$var->write( 'HELLO' . 'ROSE' . "\015\012" );
my $dom = $self->get_base_xml(1);
my $root = $dom->getElementsByTagName('main')->get_node(1);
$root->setAttribute( 'uri_post', $self->uri_gen( { state => 'start'
} ) );
return $dom;
}
package Firstb2b::AxKit2::SubprocessEvent;
use base qw(Danga::Socket);
use fields qw(bar);
sub new {
my Firstb2b::AxKit2::SubprocessEvent $self = shift;
my $sock = shift;
$self = fields::new( $self ) unless ref($self);
$self->SUPER::new($sock);
return $self;
}
sub event_read {
my Firstb2b::AxKit2::SubprocessEvent $self = shift;
my $bref = $self->read(10000);
return $self->close($!) unless defined $bref;
chomp $$bref;
print 'HEREEEEEEEEEEEEEEEEEEEE', $$bref;
$self->do_stuff;
}
sub do_stuff {
my Firstb2b::AxKit2::SubprocessEvent $self = shift;
print "start do_stuff\n";
print "finish do_stuff\n";
#$self->close;
}
1;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]