raindrops RubyGem user+dev discussion/patches/pulls/bugs/help
 help / color / mirror / code / Atom feed
From: Eric Wong <normalperson@yhbt.net>
To: raindrops@librelist.org
Subject: [PATCH 3/3] Linux::TCP_Info: implement #get! instance method
Date: Thu, 11 Apr 2013 23:28:24 +0000	[thread overview]
Message-ID: <1365722904-889-3-git-send-email-normalperson@yhbt.net> (raw)
In-Reply-To: 1365722904-889-1-git-send-email-normalperson@yhbt.net

This allows reusing existing Linux::TCP_Info objects to avoid
generating garbage.
---
 ext/raindrops/linux_tcp_info.c | 1 +
 test/test_linux_tcp_info.rb    | 7 +++++++
 2 files changed, 8 insertions(+)

diff --git a/ext/raindrops/linux_tcp_info.c b/ext/raindrops/linux_tcp_info.c
index ce1c2d3..dcdb153 100644
--- a/ext/raindrops/linux_tcp_info.c
+++ b/ext/raindrops/linux_tcp_info.c
@@ -131,6 +131,7 @@ void Init_raindrops_linux_tcp_info(void)
 	cTCP_Info = rb_define_class_under(cRaindrops, "TCP_Info", rb_cObject);
 	rb_define_alloc_func(cTCP_Info, alloc);
 	rb_define_private_method(cTCP_Info, "initialize", init, 1);
+	rb_define_method(cTCP_Info, "get!", init, 1);
 
 #define TCPI_DEFINE_METHOD(x) \
 	rb_define_method(cTCP_Info, #x, tcp_info_##x, 0)
diff --git a/test/test_linux_tcp_info.rb b/test/test_linux_tcp_info.rb
index 3b4a245..c947211 100644
--- a/test/test_linux_tcp_info.rb
+++ b/test/test_linux_tcp_info.rb
@@ -12,6 +12,7 @@ class TestLinuxTCP_Info < Test::Unit::TestCase
   # Linux kernel commit 5ee3afba88f5a79d0bff07ddd87af45919259f91
   TCP_INFO_useful_listenq = `uname -r`.strip >= '2.6.24'
 
+
   def test_tcp_server
     s = TCPServer.new(TEST_ADDR, 0)
     rv = Raindrops::TCP_Info.new s
@@ -23,6 +24,11 @@ def test_tcp_server
     a = s.accept
     tmp = Raindrops::TCP_Info.new s
     assert_equal 0, tmp.unacked
+    before = tmp.object_id
+
+    tmp.get!(s)
+    assert_equal before, tmp.object_id
+
     ensure
       c.close if c
       a.close if a
@@ -35,6 +41,7 @@ def test_accessors
     tcp_info_methods = tmp.methods - Object.new.methods
     assert tcp_info_methods.size >= 32
     tcp_info_methods.each do |m|
+      next if m.to_sym == :get!
       val = tmp.__send__ m
       assert_kind_of Integer, val
       assert val >= 0
-- 
1.8.2.279.g631bc94



  parent reply	other threads:[~2013-04-11 23:29 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-11 23:28 [PATCH 1/3] raindrops: favor configured processor count over online count Eric Wong
2013-04-11 23:28 ` [PATCH 2/3] watcher: set Content-Type via assignment Eric Wong
2013-04-11 23:28 ` Eric Wong [this message]
2013-04-11 23:30 ` [PATCH 1/3] raindrops: favor configured processor count over online count Eric Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://yhbt.net/raindrops/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1365722904-889-3-git-send-email-normalperson@yhbt.net \
    --to=normalperson@yhbt.net \
    --cc=raindrops@librelist.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhbt.net/raindrops.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).