diff options
author | Martin Sustrik <sustrik@250bpm.com> | 2010-02-19 15:25:05 +0100 |
---|---|---|
committer | Martin Sustrik <sustrik@250bpm.com> | 2010-02-19 15:25:05 +0100 |
commit | aff1f6621ae13083c7f15f7f1f808560254a2dcb (patch) | |
tree | 9e73dd8bd5d38a21e0aa83b4d4bea55b7792b39e /bindings/ruby | |
parent | 75f571c8844231f4172f131e1dd6ba2348eb54e5 (diff) | |
parent | 2a79a943de417679c562cd4a917e1d1bc19b0d25 (diff) |
Merge branch 'master' of git@github.com:sustrik/zeromq2
Diffstat (limited to 'bindings/ruby')
-rw-r--r-- | bindings/ruby/extconf.rb | 8 | ||||
-rw-r--r-- | bindings/ruby/rbzmq.cpp | 75 |
2 files changed, 45 insertions, 38 deletions
diff --git a/bindings/ruby/extconf.rb b/bindings/ruby/extconf.rb index d5778d0..30c70fb 100644 --- a/bindings/ruby/extconf.rb +++ b/bindings/ruby/extconf.rb @@ -18,7 +18,11 @@ require 'mkmf' dir_config('libzmq') -have_library('libzmq') -create_makefile("ruby") +if have_library('libzmq', 'zmq_init') + puts "Cool, I found your zmq install..." + create_makefile("zmq") +else + raise "Couldn't find zmq library. try setting --with-zmq-dir=<path> to tell me where it is." +end diff --git a/bindings/ruby/rbzmq.cpp b/bindings/ruby/rbzmq.cpp index fce749c..9683de4 100644 --- a/bindings/ruby/rbzmq.cpp +++ b/bindings/ruby/rbzmq.cpp @@ -69,8 +69,8 @@ static VALUE socket_initialize (VALUE self_, VALUE context_, VALUE type_) { assert (!DATA_PTR (self_)); - if (strcmp (rb_obj_classname (context_), "Context") != 0) { - rb_raise (rb_eArgError, "expected Context object"); + if (strcmp (rb_obj_classname (context_), "ZMQ::Context") != 0) { + rb_raise (rb_eArgError, "expected ZMQ::Context object"); return Qnil; } @@ -103,7 +103,7 @@ static VALUE socket_setsockopt (VALUE self_, VALUE option_, long optval = FIX2LONG (optval_); // Forward the code to native 0MQ library. - rc = zmq_setsockopt (DATA_PTR (self_), NUM2INT (option_), + rc = zmq_setsockopt (DATA_PTR (self_), NUM2INT (option_), (void *) &optval, 4); } break; @@ -113,8 +113,8 @@ static VALUE socket_setsockopt (VALUE self_, VALUE option_, case ZMQ_UNSUBSCRIBE: // Forward the code to native 0MQ library. - rc = zmq_setsockopt (DATA_PTR (self_), NUM2INT (option_), - (void *) StringValueCStr (optval_), RSTRING_LEN (optval_)); + rc = zmq_setsockopt (DATA_PTR (self_), NUM2INT (option_), + (void *) StringValueCStr (optval_), RSTRING_LEN (optval_)); break; default: @@ -170,7 +170,7 @@ static VALUE socket_send (VALUE self_, VALUE msg_, VALUE flags_) return Qnil; } memcpy (zmq_msg_data (&msg), RSTRING_PTR (msg_), RSTRING_LEN (msg_)); - + rc = zmq_send (DATA_PTR (self_), &msg, NUM2INT (flags_)); if (rc != 0 && errno == EAGAIN) { rc = zmq_msg_close (&msg); @@ -233,13 +233,16 @@ static VALUE socket_recv (VALUE self_, VALUE flags_) } extern "C" void Init_librbzmq () -{ - VALUE context_type = rb_define_class ("Context", rb_cObject); +{ + VALUE zmq_module = rb_define_module ("ZMQ"); + VALUE context_type = rb_define_class_under (zmq_module, "Context", + rb_cObject); rb_define_alloc_func (context_type, context_alloc); rb_define_method (context_type, "initialize", (VALUE(*)(...)) context_initialize, 3); - VALUE socket_type = rb_define_class ("Socket", rb_cObject); + VALUE socket_type = rb_define_class_under (zmq_module, "Socket", + rb_cObject); rb_define_alloc_func (socket_type, socket_alloc); rb_define_method (socket_type, "initialize", (VALUE(*)(...)) socket_initialize, 2); @@ -256,31 +259,31 @@ extern "C" void Init_librbzmq () rb_define_method (socket_type, "recv", (VALUE(*)(...)) socket_recv, 1); - rb_define_global_const ("HWM", INT2NUM (ZMQ_HWM)); - rb_define_global_const ("LWM", INT2NUM (ZMQ_LWM)); - rb_define_global_const ("SWAP", INT2NUM (ZMQ_SWAP)); - rb_define_global_const ("AFFINITY", INT2NUM (ZMQ_AFFINITY)); - rb_define_global_const ("IDENTITY", INT2NUM (ZMQ_IDENTITY)); - rb_define_global_const ("SUBSCRIBE", INT2NUM (ZMQ_SUBSCRIBE)); - rb_define_global_const ("UNSUBSCRIBE", INT2NUM (ZMQ_UNSUBSCRIBE)); - rb_define_global_const ("RATE", INT2NUM (ZMQ_RATE)); - rb_define_global_const ("RECOVERY_IVL", INT2NUM (ZMQ_RECOVERY_IVL)); - rb_define_global_const ("MCAST_LOOP", INT2NUM (ZMQ_MCAST_LOOP)); - rb_define_global_const ("SNDBUF", INT2NUM (ZMQ_SNDBUF)); - rb_define_global_const ("RCVBUF", INT2NUM (ZMQ_RCVBUF)); - - rb_define_global_const ("NOBLOCK", INT2NUM (ZMQ_NOBLOCK)); - rb_define_global_const ("NOFLUSH", INT2NUM (ZMQ_NOFLUSH)); - - rb_define_global_const ("P2P", INT2NUM (ZMQ_P2P)); - rb_define_global_const ("SUB", INT2NUM (ZMQ_SUB)); - rb_define_global_const ("PUB", INT2NUM (ZMQ_PUB)); - rb_define_global_const ("REQ", INT2NUM (ZMQ_REQ)); - rb_define_global_const ("REP", INT2NUM (ZMQ_REP)); - rb_define_global_const ("XREQ", INT2NUM (ZMQ_XREQ)); - rb_define_global_const ("XREP", INT2NUM (ZMQ_XREP)); - rb_define_global_const ("UPSTREAM", INT2NUM (ZMQ_UPSTREAM)); - rb_define_global_const ("DOWNSTREAM", INT2NUM (ZMQ_DOWNSTREAM)); - - rb_define_global_const ("POLL", INT2NUM (ZMQ_POLL)); + rb_define_const (zmq_module, "HWM", INT2NUM (ZMQ_HWM)); + rb_define_const (zmq_module, "LWM", INT2NUM (ZMQ_LWM)); + rb_define_const (zmq_module, "SWAP", INT2NUM (ZMQ_SWAP)); + rb_define_const (zmq_module, "AFFINITY", INT2NUM (ZMQ_AFFINITY)); + rb_define_const (zmq_module, "IDENTITY", INT2NUM (ZMQ_IDENTITY)); + rb_define_const (zmq_module, "SUBSCRIBE", INT2NUM (ZMQ_SUBSCRIBE)); + rb_define_const (zmq_module, "UNSUBSCRIBE", INT2NUM (ZMQ_UNSUBSCRIBE)); + rb_define_const (zmq_module, "RATE", INT2NUM (ZMQ_RATE)); + rb_define_const (zmq_module, "RECOVERY_IVL", INT2NUM (ZMQ_RECOVERY_IVL)); + rb_define_const (zmq_module, "MCAST_LOOP", INT2NUM (ZMQ_MCAST_LOOP)); + rb_define_const (zmq_module, "SNDBUF", INT2NUM (ZMQ_SNDBUF)); + rb_define_const (zmq_module, "RCVBUF", INT2NUM (ZMQ_RCVBUF)); + + rb_define_const (zmq_module, "NOBLOCK", INT2NUM (ZMQ_NOBLOCK)); + rb_define_const (zmq_module, "NOFLUSH", INT2NUM (ZMQ_NOFLUSH)); + + rb_define_const (zmq_module, "P2P", INT2NUM (ZMQ_P2P)); + rb_define_const (zmq_module, "SUB", INT2NUM (ZMQ_SUB)); + rb_define_const (zmq_module, "PUB", INT2NUM (ZMQ_PUB)); + rb_define_const (zmq_module, "REQ", INT2NUM (ZMQ_REQ)); + rb_define_const (zmq_module, "REP", INT2NUM (ZMQ_REP)); + rb_define_const (zmq_module, "XREQ", INT2NUM (ZMQ_XREQ)); + rb_define_const (zmq_module, "XREP", INT2NUM (ZMQ_XREP)); + rb_define_const (zmq_module, "UPSTREAM", INT2NUM (ZMQ_UPSTREAM)); + rb_define_const (zmq_module, "DOWNSTREAM", INT2NUM (ZMQ_DOWNSTREAM)); + + rb_define_const (zmq_module, "POLL", INT2NUM (ZMQ_POLL)); } |