NAME

RapidApp::BgTask::MsgPipeNB

SYNOPSIS

sub runServer {
  my $self= shift;
  my $pipe= RapidApp::BgTask::MsgPipeNB->new( socket => $sock, autoRMI => 1, rmiTargetObj => $self );
  my $exit= AE::cv;
  $pipe->onMessage( sub {
    my ($pipe, $msg)= @_;
    return $exit->send if $msg->{exit};
    $msg->{got_it}= 1;
    $pipe->pushMessage($msg);
  } );
  $exit->recv;
}

DESCRIPTION

This is a version of MsgPipe that can work with non-blocking event-driven IO.

Instead of recvMessage, use a callback handler in onMessage.

Instead of sendMessage, use pushMessage.

Instead of callRemoteMethod, use pushMethodCall.

pushMessage( \%message )

Adds a message to the queue.

Note that there is no guarantee that the message actually got sent by the copletion of this call.

pushMethodCall( methodName => \@params, $unsupported_timeout, $callback )

Push a method call onto the send queue, and register a callback which will run when a response (either success or failure) is received.

Note that the third parameter (timeout) is not yet supported.

On success, the callback will be called as callback( $msgPipe, 1, \@result )

On failure, the callback will be called as callback( $msgPipe, 0, $errMsg )