1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
package ZMQ::FFI::Custom::Raw;
$ZMQ::FFI::Custom::Raw::VERSION = '1.19';
sub load {
my ($soname) = @_;
my $ffi = FFI::Platypus->new( lib => $soname // 'libzmq.so' );
my $target = caller;
#
# for get/set sockopt create ffi functions for each possible opt type
#
# int zmq_getsockopt(void *sock, int opt, void *val, size_t *len)
$ffi->attach(
['zmq_getsockopt' => "${target}::zmq_getsockopt_binary"]
=> ['pointer', 'int', 'pointer', 'size_t*'] => 'int'
);
$ffi->attach(
['zmq_getsockopt' => "${target}::zmq_getsockopt_int"]
=> ['pointer', 'int', 'int*', 'size_t*'] => 'int'
);
$ffi->attach(
['zmq_getsockopt' => "${target}::zmq_getsockopt_int64"]
=> ['pointer', 'int', 'sint64*', 'size_t*'] => 'int'
);
$ffi->attach(
['zmq_getsockopt' => "${target}::zmq_getsockopt_uint64"]
=> ['pointer', 'int', 'uint64*', 'size_t*'] => 'int'
);
# int zmq_setsockopt(void *sock, int opt, const void *val, size_t len)
$ffi->attach(
['zmq_setsockopt' => "${target}::zmq_setsockopt_binary"]
=> ['pointer', 'int', 'pointer', 'size_t'] => 'int'
);
$ffi->attach(
['zmq_setsockopt' => "${target}::zmq_setsockopt_int"]
=> ['pointer', 'int', 'int*', 'size_t'] => 'int'
);
$ffi->attach(
['zmq_setsockopt' => "${target}::zmq_setsockopt_int64"]
=> ['pointer', 'int', 'sint64*', 'size_t'] => 'int'
);
$ffi->attach(
['zmq_setsockopt' => "${target}::zmq_setsockopt_uint64"]
=> ['pointer', 'int', 'uint64*', 'size_t'] => 'int'
);
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
ZMQ::FFI::Custom::Raw
=head1 VERSION
version 1.19
=head1 AUTHOR
Dylan Cali <calid1984@gmail.com>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2023 by Dylan Cali.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut
|