FFI-Platypus

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN


     use constant ZMQ_IO_THREADS  => 1;
     use constant ZMQ_MAX_SOCKETS => 2;
     use constant ZMQ_REQ => 3;
     use constant ZMQ_REP => 4;
     use FFI::CheckLib qw( find_lib_or_die );
     use FFI::Platypus 2.00;
     use FFI::Platypus::Memory qw( malloc );
     use FFI::Platypus::Buffer qw( scalar_to_buffer window );
     
     my $endpoint = "ipc://zmq-ffi-$$";
     my $ffi = FFI::Platypus->new(
       api => 2,
       lib => find_lib_or_die lib => 'zmq',
     );
     
     $ffi->attach(zmq_version => ['int*', 'int*', 'int*'] => 'void');
     
     my($major,$minor,$patch);
     zmq_version(\$major, \$minor, \$patch);
     print "libzmq version $major.$minor.$patch\n";

README  view on Meta::CPAN

     $ffi->attach(zmq_msg_init => ['zmq_msg_t'] => 'int');
     $ffi->attach(zmq_msg_recv => ['zmq_msg_t', 'zmq_socket', 'int'] => 'int');
     $ffi->attach(zmq_msg_data => ['zmq_msg_t'] => 'opaque');
     $ffi->attach(zmq_errno    => [] => 'int');
     $ffi->attach(zmq_strerror => ['int'] => 'string');
     
     my $context = zmq_ctx_new();
     zmq_ctx_set($context, ZMQ_IO_THREADS, 1);
     
     my $socket1 = zmq_socket($context, ZMQ_REQ);
     zmq_connect($socket1, $endpoint);
     
     my $socket2 = zmq_socket($context, ZMQ_REP);
     zmq_bind($socket2, $endpoint);
     
     { # send
       our $sent_message = "hello there";
       my($pointer, $size) = scalar_to_buffer $sent_message;
       my $r = zmq_send($socket1, $pointer, $size, 0);
       die zmq_strerror(zmq_errno()) if $r == -1;
     }
     
     { # recv
       my $msg_ptr  = malloc 100;

examples/zmq3.pl  view on Meta::CPAN

use warnings;
use constant ZMQ_IO_THREADS  => 1;
use constant ZMQ_MAX_SOCKETS => 2;
use constant ZMQ_REQ => 3;
use constant ZMQ_REP => 4;
use FFI::CheckLib qw( find_lib_or_die );
use FFI::Platypus 2.00;
use FFI::Platypus::Memory qw( malloc );
use FFI::Platypus::Buffer qw( scalar_to_buffer window );

my $endpoint = "ipc://zmq-ffi-$$";
my $ffi = FFI::Platypus->new(
  api => 2,
  lib => find_lib_or_die lib => 'zmq',
);

$ffi->attach(zmq_version => ['int*', 'int*', 'int*'] => 'void');

my($major,$minor,$patch);
zmq_version(\$major, \$minor, \$patch);
print "libzmq version $major.$minor.$patch\n";

examples/zmq3.pl  view on Meta::CPAN

$ffi->attach(zmq_msg_init => ['zmq_msg_t'] => 'int');
$ffi->attach(zmq_msg_recv => ['zmq_msg_t', 'zmq_socket', 'int'] => 'int');
$ffi->attach(zmq_msg_data => ['zmq_msg_t'] => 'opaque');
$ffi->attach(zmq_errno    => [] => 'int');
$ffi->attach(zmq_strerror => ['int'] => 'string');

my $context = zmq_ctx_new();
zmq_ctx_set($context, ZMQ_IO_THREADS, 1);

my $socket1 = zmq_socket($context, ZMQ_REQ);
zmq_connect($socket1, $endpoint);

my $socket2 = zmq_socket($context, ZMQ_REP);
zmq_bind($socket2, $endpoint);

{ # send
  our $sent_message = "hello there";
  my($pointer, $size) = scalar_to_buffer $sent_message;
  my $r = zmq_send($socket1, $pointer, $size, 0);
  die zmq_strerror(zmq_errno()) if $r == -1;
}

{ # recv
  my $msg_ptr  = malloc 100;

lib/FFI/Platypus.pm  view on Meta::CPAN


 use constant ZMQ_IO_THREADS  => 1;
 use constant ZMQ_MAX_SOCKETS => 2;
 use constant ZMQ_REQ => 3;
 use constant ZMQ_REP => 4;
 use FFI::CheckLib qw( find_lib_or_die );
 use FFI::Platypus 2.00;
 use FFI::Platypus::Memory qw( malloc );
 use FFI::Platypus::Buffer qw( scalar_to_buffer window );
 
 my $endpoint = "ipc://zmq-ffi-$$";
 my $ffi = FFI::Platypus->new(
   api => 2,
   lib => find_lib_or_die lib => 'zmq',
 );
 
 $ffi->attach(zmq_version => ['int*', 'int*', 'int*'] => 'void');
 
 my($major,$minor,$patch);
 zmq_version(\$major, \$minor, \$patch);
 print "libzmq version $major.$minor.$patch\n";

lib/FFI/Platypus.pm  view on Meta::CPAN

 $ffi->attach(zmq_msg_init => ['zmq_msg_t'] => 'int');
 $ffi->attach(zmq_msg_recv => ['zmq_msg_t', 'zmq_socket', 'int'] => 'int');
 $ffi->attach(zmq_msg_data => ['zmq_msg_t'] => 'opaque');
 $ffi->attach(zmq_errno    => [] => 'int');
 $ffi->attach(zmq_strerror => ['int'] => 'string');
 
 my $context = zmq_ctx_new();
 zmq_ctx_set($context, ZMQ_IO_THREADS, 1);
 
 my $socket1 = zmq_socket($context, ZMQ_REQ);
 zmq_connect($socket1, $endpoint);
 
 my $socket2 = zmq_socket($context, ZMQ_REP);
 zmq_bind($socket2, $endpoint);
 
 { # send
   our $sent_message = "hello there";
   my($pointer, $size) = scalar_to_buffer $sent_message;
   my $r = zmq_send($socket1, $pointer, $size, 0);
   die zmq_strerror(zmq_errno()) if $r == -1;
 }
 
 { # recv
   my $msg_ptr  = malloc 100;



( run in 1.758 second using v1.01-cache-2.11-cpan-2b1a40005be )