posixtimer 0.1 → 0.2

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.
Files changed (3) hide show
  1. data/ext/posixtimer.c +18 -14
  2. data/test/timertests.rb +2 -0
  3. metadata +3 -3
data/ext/posixtimer.c CHANGED
@@ -52,20 +52,6 @@ static VALUE timer_alloc(VALUE klass)
52
52
  return obj;
53
53
  }
54
54
 
55
- /* call-seq:
56
- * Posix::Timer.new
57
- * Posix::Timer.new("ALRM")
58
- * Posix::Timer.new("USR1")
59
- * Posix::Timer.new { some_block }
60
- *
61
- * Create a new Posix::Timer object. The argument passed can be any valid
62
- * signal type from Signal.list.
63
- *
64
- * If a block is passed, that block will be executed when the Posix::Timer timeout
65
- * has expired. This is done by trapping the signal specified as creation time, so
66
- * be careful if you have other uses of that signal in your program.
67
- *
68
- */
69
55
  static VALUE timer_initialize(int argc, VALUE *argv, VALUE self)
70
56
  {
71
57
  VALUE sigtype, codeblock;
@@ -97,11 +83,26 @@ static VALUE timer_initialize(int argc, VALUE *argv, VALUE self)
97
83
  data->sig_event = &data->se;
98
84
 
99
85
  destroy_timer(data);
86
+ data->timer_id = 0;
100
87
  create_new_timer(data);
101
88
 
102
89
  return self;
103
90
  }
104
91
 
92
+ /* call-seq:
93
+ * Posix::Timer.new
94
+ * Posix::Timer.new("ALRM")
95
+ * Posix::Timer.new("USR1")
96
+ * Posix::Timer.new { some_block }
97
+ *
98
+ * Create a new Posix::Timer object. The argument passed can be any valid
99
+ * signal type from Signal.list.
100
+ *
101
+ * If a block is passed, that block will be executed when the Posix::Timer timeout
102
+ * has expired. This is done by trapping the signal specified as creation time, so
103
+ * be careful if you have other uses of that signal in your program.
104
+ *
105
+ */
105
106
  static VALUE timer_new(int argc, VALUE *argv, VALUE self)
106
107
  {
107
108
  VALUE obj = rb_funcall(self, rb_intern("allocate"), 0);
@@ -141,6 +142,9 @@ static VALUE timer_arm(VALUE klass, VALUE arg)
141
142
 
142
143
  data->tspec.it_value.tv_sec = sec;
143
144
  data->tspec.it_value.tv_nsec = usec;
145
+ // Set the interval to 0 for timer resets
146
+ data->tspec.it_interval.tv_sec = 0;
147
+ data->tspec.it_interval.tv_nsec = 0;
144
148
 
145
149
  if(timer_settime(data->timer_id, 0, &(data->tspec), NULL) == -1)
146
150
  rb_sys_fail("timer_settime()");
data/test/timertests.rb CHANGED
@@ -37,6 +37,8 @@ class TimerTest < Test::Unit::TestCase
37
37
  def test_timer_with_block
38
38
  i = 5
39
39
  a = Posix::Timer.new { i = 10 }
40
+ assert i == 5
41
+
40
42
  assert_nothing_raised(SignalException) {
41
43
  a.arm(1)
42
44
  sleep(2)
metadata CHANGED
@@ -1,10 +1,10 @@
1
- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: posixtimer
5
5
  version: !ruby/object:Gem::Version
6
- version: "0.1"
7
- date: 2005-12-09 00:00:00 -05:00
6
+ version: "0.2"
7
+ date: 2006-02-09 00:00:00 -05:00
8
8
  summary: A class that provides a definable timeout
9
9
  require_paths:
10
10
  - .