nmsg 0.1.1.pre → 0.1.2.pre
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.
- checksums.yaml +4 -4
- data/ext/nmsg/rubyext.c +34 -0
- data/nmsg.gemspec +3 -2
- data/test/test_nmsg.rb +47 -0
- metadata +5 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f4e255cdc135501206bfd76fc85b7873d099357e
|
|
4
|
+
data.tar.gz: bfeab451642d6f2b7bee04f3159201e4bd7b402e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 89c3cb9ed3da26314e34a303ea9814b9b25021e2937ec04683e2260445728846baf187027afbbffd92a00c0482da117d9bcbcfbbe9d817428972c58972830a87
|
|
7
|
+
data.tar.gz: f66166f55a9755e4f58d58a96b4fee540fdd26ea72deb7408b0f6cf2e50136bca9579ec89767e11129d6a01a0115ea777f0bb042fc83d67220dc1b879394ff8b
|
data/ext/nmsg/rubyext.c
CHANGED
|
@@ -193,6 +193,37 @@ VALUE rb_socket_send_msg_block(VALUE self, VALUE obj) {
|
|
|
193
193
|
|
|
194
194
|
#endif // HAVE_RB_THREAD_CALL_WITHOUT_GVL
|
|
195
195
|
|
|
196
|
+
VALUE rb_socket_get_opt(VALUE self, VALUE level, VALUE option) {
|
|
197
|
+
GET_SOCKET(self);
|
|
198
|
+
if (!S || S->fd < 0)
|
|
199
|
+
return Qnil;
|
|
200
|
+
|
|
201
|
+
// TODO/FIXME: string values
|
|
202
|
+
|
|
203
|
+
int lvl = NUM2INT(level);
|
|
204
|
+
int opt = NUM2INT(option);
|
|
205
|
+
|
|
206
|
+
int val = -1;
|
|
207
|
+
size_t sz = sizeof(val);
|
|
208
|
+
const int res = nn_getsockopt(S->fd, lvl, opt, &val, &sz);
|
|
209
|
+
return (res == 0) ? INT2NUM(val) : Qnil;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
VALUE rb_socket_set_opt(VALUE self, VALUE level, VALUE option, VALUE value) {
|
|
213
|
+
GET_SOCKET(self);
|
|
214
|
+
if (!S || S->fd < 0)
|
|
215
|
+
return Qnil;
|
|
216
|
+
|
|
217
|
+
// TODO/FIXME: string values
|
|
218
|
+
|
|
219
|
+
int lvl = NUM2INT(level);
|
|
220
|
+
int opt = NUM2INT(option);
|
|
221
|
+
int val = NUM2INT(value);
|
|
222
|
+
|
|
223
|
+
const int res = nn_setsockopt(S->fd, lvl, opt, &val, sizeof(val));
|
|
224
|
+
return (res == 0) ? self : Qnil;
|
|
225
|
+
}
|
|
226
|
+
|
|
196
227
|
VALUE rb_socket_close(VALUE self) {
|
|
197
228
|
GET_SOCKET(self);
|
|
198
229
|
if (S && S->fd > 0) {
|
|
@@ -262,6 +293,9 @@ void Init_nmsg() {
|
|
|
262
293
|
rb_define_method(cSocket, "send_msg_block", rb_socket_send_msg_block, 1);
|
|
263
294
|
#endif
|
|
264
295
|
|
|
296
|
+
rb_define_method(cSocket, "get_option", rb_socket_get_opt, 2);
|
|
297
|
+
rb_define_method(cSocket, "set_option", rb_socket_set_opt, 3);
|
|
298
|
+
|
|
265
299
|
rb_define_method(cSocket, "close", rb_socket_close, 0);
|
|
266
300
|
rb_define_method(cSocket, "shutdown", rb_socket_shutdown, 1);
|
|
267
301
|
|
data/nmsg.gemspec
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Gem::Specification.new do |s|
|
|
2
2
|
s.name = 'nmsg'
|
|
3
|
-
s.version = '0.1.
|
|
3
|
+
s.version = '0.1.2.pre'
|
|
4
4
|
s.license = 'MIT'
|
|
5
5
|
s.author = 'Alex Brem'
|
|
6
6
|
s.email = 'alex@fluktuation.net'
|
|
@@ -11,8 +11,9 @@ Gem::Specification.new do |s|
|
|
|
11
11
|
s.files = [
|
|
12
12
|
'README.md', 'LICENSE', 'Makefile', 'Gemfile', 'nmsg.gemspec',
|
|
13
13
|
'examples/req.rb', 'examples/rep.rb', 'examples/push_pull.rb',
|
|
14
|
-
'ext/nmsg/extconf.rb', 'ext/nmsg/rubyext.c'
|
|
14
|
+
'ext/nmsg/extconf.rb', 'ext/nmsg/rubyext.c', 'test/test_nmsg.rb'
|
|
15
15
|
]
|
|
16
|
+
s.test_files = ['test/test_nmsg.rb']
|
|
16
17
|
|
|
17
18
|
s.require_paths = ['lib']
|
|
18
19
|
s.extensions = ["ext/nmsg/extconf.rb"]
|
data/test/test_nmsg.rb
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'minitest/autorun'
|
|
4
|
+
require_relative '../ext/nmsg/nmsg'
|
|
5
|
+
|
|
6
|
+
class NmsgTestSocket < MiniTest::Unit::TestCase
|
|
7
|
+
def setup
|
|
8
|
+
@socket = Nmsg::Socket.new(Nmsg::AF_SP, Nmsg::NN_PAIR)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def test_socket
|
|
12
|
+
assert @socket
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_socket_option_linger
|
|
16
|
+
ms = @socket.get_option(Nmsg::NN_SOL_SOCKET, Nmsg::NN_LINGER)
|
|
17
|
+
assert_equal ms, 1000, "default linger time"
|
|
18
|
+
|
|
19
|
+
res = @socket.set_option(Nmsg::NN_SOL_SOCKET, Nmsg::NN_LINGER, 0)
|
|
20
|
+
assert res, "set linger"
|
|
21
|
+
|
|
22
|
+
ms = @socket.get_option(Nmsg::NN_SOL_SOCKET, Nmsg::NN_LINGER)
|
|
23
|
+
assert_equal ms, 0, "default linger time is 0"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_socket_option_sndbuf
|
|
27
|
+
size = @socket.get_option(Nmsg::NN_SOL_SOCKET, Nmsg::NN_SNDBUF)
|
|
28
|
+
assert_equal size, 131_072, "default send buffer size"
|
|
29
|
+
|
|
30
|
+
res = @socket.set_option(Nmsg::NN_SOL_SOCKET, Nmsg::NN_SNDBUF, 262_144)
|
|
31
|
+
assert res, "set send buffer size"
|
|
32
|
+
|
|
33
|
+
size = @socket.get_option(Nmsg::NN_SOL_SOCKET, Nmsg::NN_SNDBUF)
|
|
34
|
+
assert_equal size, 262_144, "send buffer size is 256kB"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_socket_option_rcvbuf
|
|
38
|
+
size = @socket.get_option(Nmsg::NN_SOL_SOCKET, Nmsg::NN_RCVBUF)
|
|
39
|
+
assert_equal size, 131_072, "default receive buffer size"
|
|
40
|
+
|
|
41
|
+
res = @socket.set_option(Nmsg::NN_SOL_SOCKET, Nmsg::NN_RCVBUF, 262_144)
|
|
42
|
+
assert res, "set receive buffer size"
|
|
43
|
+
|
|
44
|
+
size = @socket.get_option(Nmsg::NN_SOL_SOCKET, Nmsg::NN_RCVBUF)
|
|
45
|
+
assert_equal size, 262_144, "receive buffer size is 256kB"
|
|
46
|
+
end
|
|
47
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: nmsg
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.2.pre
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alex Brem
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-11-
|
|
11
|
+
date: 2014-11-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: native binding for the nanomsg c library
|
|
14
14
|
email: alex@fluktuation.net
|
|
@@ -27,6 +27,7 @@ files:
|
|
|
27
27
|
- ext/nmsg/extconf.rb
|
|
28
28
|
- ext/nmsg/rubyext.c
|
|
29
29
|
- nmsg.gemspec
|
|
30
|
+
- test/test_nmsg.rb
|
|
30
31
|
homepage: https://github.com/localhost/nmsg
|
|
31
32
|
licenses:
|
|
32
33
|
- MIT
|
|
@@ -51,4 +52,5 @@ rubygems_version: 2.2.2
|
|
|
51
52
|
signing_key:
|
|
52
53
|
specification_version: 4
|
|
53
54
|
summary: native nanomsg binding
|
|
54
|
-
test_files:
|
|
55
|
+
test_files:
|
|
56
|
+
- test/test_nmsg.rb
|