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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eaf25c8d389c83267a1c4f0ce13fd6af22a17c94
4
- data.tar.gz: d47c26ce0fa8f55a763dcb83bcf07e9875479f82
3
+ metadata.gz: f4e255cdc135501206bfd76fc85b7873d099357e
4
+ data.tar.gz: bfeab451642d6f2b7bee04f3159201e4bd7b402e
5
5
  SHA512:
6
- metadata.gz: 9b27be1a064c4637e685ae1f36f355b2ae2bd2757376b26fea6fcba2c89e547ca47a625e1f8f9b6737892cae291c2f045e72135b408554d1c2659e18400a062f
7
- data.tar.gz: 21bf0ecc1704c1ecb5289dfab969baf8f9e23b03c5f02d334343df32f3fd8ae65dec1602f1a040e0a44f7a6a3ca9a6665e2226eb444f63038bc9885ccd97660c
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.1.pre'
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.1.pre
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-05 00:00:00.000000000 Z
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