zmq 1.0 → 2.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Makefile +181 -0
- data/{ext/zmq/extconf.rb → extconf.rb} +8 -12
- data/rbzmq.c +1365 -0
- metadata +34 -30
- data/COPYING +0 -674
- data/ChangeLog +0 -1
- data/README +0 -1
- data/ext/zmq/zmq.cpp +0 -200
- data/lib/zmq.rb +0 -1
- data/test/all_tests.rb +0 -3
- data/test/test_helper.rb +0 -7
- data/test/unit/zmq_tests.rb +0 -9
data/ext/zmq/zmq.cpp
DELETED
@@ -1,200 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
Copyright (c) 2007-2009 FastMQ Inc.
|
3
|
-
|
4
|
-
This file is part of 0MQ.
|
5
|
-
|
6
|
-
0MQ is free software; you can redistribute it and/or modify it under
|
7
|
-
the terms of the Lesser GNU General Public License as published by
|
8
|
-
the Free Software Foundation; either version 3 of the License, or
|
9
|
-
(at your option) any later version.
|
10
|
-
|
11
|
-
0MQ is distributed in the hope that it will be useful,
|
12
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
-
Lesser GNU General Public License for more details.
|
15
|
-
|
16
|
-
You should have received a copy of the Lesser GNU General Public License
|
17
|
-
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
18
|
-
*/
|
19
|
-
|
20
|
-
#include <zmq.hpp>
|
21
|
-
#include <zmq/err.hpp>
|
22
|
-
#include <ruby.h>
|
23
|
-
|
24
|
-
struct context_t
|
25
|
-
{
|
26
|
-
zmq::dispatcher_t *dispatcher;
|
27
|
-
zmq::locator_t *locator;
|
28
|
-
zmq::i_thread *io_thread;
|
29
|
-
zmq::api_thread_t *api_thread;
|
30
|
-
};
|
31
|
-
|
32
|
-
static VALUE rb_zmq;
|
33
|
-
static VALUE rb_data;
|
34
|
-
|
35
|
-
static void rb_free (void *p)
|
36
|
-
{
|
37
|
-
context_t *context = (context_t*) p;
|
38
|
-
|
39
|
-
// Deallocate the 0MQ infrastructure.
|
40
|
-
delete context->locator;
|
41
|
-
delete context->dispatcher;
|
42
|
-
delete context;
|
43
|
-
}
|
44
|
-
|
45
|
-
static VALUE rb_alloc (VALUE self_)
|
46
|
-
{
|
47
|
-
context_t *context;
|
48
|
-
VALUE obj;
|
49
|
-
|
50
|
-
context = new context_t;
|
51
|
-
obj = Data_Wrap_Struct (self_, 0, rb_free, context);
|
52
|
-
|
53
|
-
return obj;
|
54
|
-
}
|
55
|
-
|
56
|
-
static VALUE rb_init (VALUE self_, VALUE host_)
|
57
|
-
{
|
58
|
-
// Get the context.
|
59
|
-
context_t* context;
|
60
|
-
Data_Get_Struct (self_, context_t, context);
|
61
|
-
|
62
|
-
context->dispatcher = new zmq::dispatcher_t (2);
|
63
|
-
assert (context->dispatcher);
|
64
|
-
|
65
|
-
context->locator = new zmq::locator_t (StringValueCStr (host_));
|
66
|
-
assert (context->locator);
|
67
|
-
|
68
|
-
context->io_thread = zmq::io_thread_t::create (context->dispatcher);
|
69
|
-
assert (context->io_thread);
|
70
|
-
|
71
|
-
context->api_thread = zmq::api_thread_t::create (context->dispatcher,
|
72
|
-
context->locator);
|
73
|
-
assert (context->api_thread);
|
74
|
-
|
75
|
-
return self_;
|
76
|
-
}
|
77
|
-
|
78
|
-
static VALUE rb_mask (VALUE self_, VALUE notifications_)
|
79
|
-
{
|
80
|
-
// Get the context.
|
81
|
-
context_t* context;
|
82
|
-
Data_Get_Struct (self_, context_t, context);
|
83
|
-
|
84
|
-
// Forward the call.
|
85
|
-
context->api_thread->mask (NUM2UINT (notifications_));
|
86
|
-
|
87
|
-
return self_;
|
88
|
-
}
|
89
|
-
|
90
|
-
static VALUE rb_create_exchange (VALUE self_, VALUE name_, VALUE scope_,
|
91
|
-
VALUE location_, VALUE style_)
|
92
|
-
{
|
93
|
-
// Get the context.
|
94
|
-
context_t* context;
|
95
|
-
Data_Get_Struct (self_, context_t, context);
|
96
|
-
|
97
|
-
// Forward the call to native 0MQ library.
|
98
|
-
return INT2NUM (context->api_thread->create_exchange (
|
99
|
-
StringValueCStr (name_), (zmq::scope_t) NUM2INT (scope_),
|
100
|
-
StringValueCStr (location_), context->io_thread, 1, &context->io_thread,
|
101
|
-
(zmq::style_t) NUM2INT (style_)));
|
102
|
-
}
|
103
|
-
|
104
|
-
static VALUE rb_create_queue (VALUE self_, VALUE name_, VALUE scope_,
|
105
|
-
VALUE location_, VALUE hwm_, VALUE lwm_, VALUE swap_)
|
106
|
-
{
|
107
|
-
// Get the context.
|
108
|
-
context_t* context;
|
109
|
-
Data_Get_Struct (self_, context_t, context);
|
110
|
-
|
111
|
-
// Forward the call to native 0MQ library.
|
112
|
-
return INT2NUM ((context->api_thread->create_queue (
|
113
|
-
StringValueCStr (name_), (zmq::scope_t) NUM2INT (scope_),
|
114
|
-
StringValueCStr (location_), context->io_thread, 1,
|
115
|
-
&context->io_thread, NUM2LL (hwm_), NUM2LL (lwm_), NUM2LL (swap_))));
|
116
|
-
}
|
117
|
-
|
118
|
-
static VALUE rb_bind (VALUE self_, VALUE exchange_name_, VALUE queue_name_,
|
119
|
-
VALUE exchange_options_, VALUE queue_options_)
|
120
|
-
{
|
121
|
-
// Get the context.
|
122
|
-
context_t* context;
|
123
|
-
Data_Get_Struct (self_, context_t, context);
|
124
|
-
|
125
|
-
// Forward the call to native 0MQ library.
|
126
|
-
context->api_thread->bind (StringValueCStr (exchange_name_),
|
127
|
-
StringValueCStr (queue_name_), context->io_thread, context->io_thread,
|
128
|
-
StringValueCStr (exchange_options_), StringValueCStr (queue_options_));
|
129
|
-
|
130
|
-
return self_;
|
131
|
-
}
|
132
|
-
|
133
|
-
static VALUE rb_send (VALUE self_, VALUE exchange_, VALUE data_, VALUE block_)
|
134
|
-
{
|
135
|
-
// Get the context.
|
136
|
-
context_t* context;
|
137
|
-
Data_Get_Struct (self_, context_t, context);
|
138
|
-
|
139
|
-
// Forward the call to native 0MQ library.
|
140
|
-
zmq::message_t msg ((size_t) RSTRING_LEN (data_));
|
141
|
-
memcpy (msg.data (), (void*) RSTRING_PTR (data_),
|
142
|
-
RSTRING_LEN (data_));
|
143
|
-
|
144
|
-
return context->api_thread->send (NUM2INT (exchange_), msg,
|
145
|
-
NUM2INT (block_) ? true : false);
|
146
|
-
}
|
147
|
-
|
148
|
-
static VALUE rb_receive (VALUE self_, VALUE block_)
|
149
|
-
{
|
150
|
-
// Get the context.
|
151
|
-
context_t* context;
|
152
|
-
Data_Get_Struct (self_, context_t, context);
|
153
|
-
|
154
|
-
// Forward the call to native 0MQ library.
|
155
|
-
zmq::message_t msg;
|
156
|
-
int qid = context->api_thread->receive (&msg,
|
157
|
-
NUM2INT(block_) ? true : false);
|
158
|
-
|
159
|
-
VALUE rb_msg = rb_str_new ((char *) msg.data (), msg.size ());
|
160
|
-
VALUE rb_type = INT2NUM (msg.type ());
|
161
|
-
VALUE rb_qid = INT2NUM (qid);
|
162
|
-
|
163
|
-
return rb_struct_new (rb_data, rb_msg, rb_type, rb_qid, NULL);
|
164
|
-
}
|
165
|
-
|
166
|
-
extern "C"
|
167
|
-
void Init_zmq_native() {
|
168
|
-
|
169
|
-
rb_zmq = rb_define_class ("Zmq", rb_cObject);
|
170
|
-
|
171
|
-
rb_define_alloc_func (rb_zmq, rb_alloc);
|
172
|
-
|
173
|
-
rb_define_method (rb_zmq, "initialize", (VALUE(*)(...)) rb_init, 1);
|
174
|
-
rb_define_method (rb_zmq, "mask", (VALUE(*)(...)) rb_mask, 1);
|
175
|
-
rb_define_method (rb_zmq, "create_exchange",
|
176
|
-
(VALUE(*)(...)) rb_create_exchange, 4);
|
177
|
-
rb_define_method (rb_zmq, "create_queue",
|
178
|
-
(VALUE(*)(...)) rb_create_queue, 6);
|
179
|
-
rb_define_method (rb_zmq, "bind", (VALUE(*)(...)) rb_bind, 4);
|
180
|
-
rb_define_method (rb_zmq, "send", (VALUE(*)(...)) rb_send, 3);
|
181
|
-
rb_define_method (rb_zmq, "receive", (VALUE(*)(...)) rb_receive, 1);
|
182
|
-
rb_define_method (rb_zmq, "free", (VALUE(*)(...)) rb_free, 0);
|
183
|
-
|
184
|
-
rb_data = rb_struct_define (NULL, "msg", "type", "qid", NULL);
|
185
|
-
rb_define_const (rb_zmq, "DATA", rb_data);
|
186
|
-
|
187
|
-
rb_define_global_const ("ZMQ_SCOPE_LOCAL", INT2NUM (zmq::scope_local));
|
188
|
-
rb_define_global_const ("ZMQ_SCOPE_PROCESS", INT2NUM (zmq::scope_process));
|
189
|
-
rb_define_global_const ("ZMQ_SCOPE_GLOBAL", INT2NUM (zmq::scope_global));
|
190
|
-
rb_define_global_const ("ZMQ_MESSAGE_DATA", INT2NUM (zmq::message_data));
|
191
|
-
rb_define_global_const ("ZMQ_MESSAGE_GAP", INT2NUM (zmq::message_gap));
|
192
|
-
rb_define_global_const ("ZMQ_STYLE_DATA_DISTRIBUTION",
|
193
|
-
INT2NUM (zmq::style_data_distribution));
|
194
|
-
rb_define_global_const ("ZMQ_STYLE_LOAD_BALANCING",
|
195
|
-
INT2NUM (zmq::style_load_balancing));
|
196
|
-
rb_define_global_const ("ZMQ_NO_LIMIT", INT2NUM (zmq::no_limit));
|
197
|
-
rb_define_global_const ("ZMQ_NO_SWAP", INT2NUM (zmq::no_swap));
|
198
|
-
rb_define_global_const ("ZMQ_TRUE", INT2NUM (1));
|
199
|
-
rb_define_global_const ("ZMQ_FALSE", INT2NUM (0));
|
200
|
-
}
|
data/lib/zmq.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require "zmq_native"
|
data/test/all_tests.rb
DELETED
data/test/test_helper.rb
DELETED