iobuffer 0.1.0 → 0.1.1
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/CHANGES +4 -0
- data/ext/extconf.rb +4 -1
- data/ext/iobuffer.c +3 -2
- data/iobuffer.gemspec +2 -2
- data/spec/buffer_spec.rb +30 -27
- metadata +6 -8
data/CHANGES
CHANGED
data/ext/extconf.rb
CHANGED
data/ext/iobuffer.c
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
#include <errno.h>
|
16
16
|
|
17
17
|
/* Macro for retrieving the file descriptor from an FPTR */
|
18
|
-
#if !
|
18
|
+
#if !HAVE_RB_IO_T_FD
|
19
19
|
#define FPTR_TO_FD(fptr) fileno(fptr->f)
|
20
20
|
#else
|
21
21
|
#define FPTR_TO_FD(fptr) fptr->fd
|
@@ -83,6 +83,7 @@ void Init_iobuffer()
|
|
83
83
|
rb_define_method(cIO_Buffer, "empty?", IO_Buffer_empty, 0);
|
84
84
|
rb_define_method(cIO_Buffer, "<<", IO_Buffer_append, 1);
|
85
85
|
rb_define_method(cIO_Buffer, "append", IO_Buffer_append, 1);
|
86
|
+
rb_define_method(cIO_Buffer, "write", IO_Buffer_append, 1);
|
86
87
|
rb_define_method(cIO_Buffer, "prepend", IO_Buffer_prepend, 1);
|
87
88
|
rb_define_method(cIO_Buffer, "read", IO_Buffer_read, -1);
|
88
89
|
rb_define_method(cIO_Buffer, "to_str", IO_Buffer_to_str, 0);
|
@@ -596,4 +597,4 @@ static int buffer_read_from(struct buffer *buf, int fd)
|
|
596
597
|
} while(bytes_read == nbytes);
|
597
598
|
|
598
599
|
return total_bytes_read;
|
599
|
-
}
|
600
|
+
}
|
data/iobuffer.gemspec
CHANGED
@@ -2,10 +2,10 @@ require 'rubygems'
|
|
2
2
|
|
3
3
|
GEMSPEC = Gem::Specification.new do |s|
|
4
4
|
s.name = "iobuffer"
|
5
|
-
s.version = "0.1.
|
5
|
+
s.version = "0.1.1"
|
6
6
|
s.authors = "Tony Arcieri"
|
7
7
|
s.email = "tony@medioh.com"
|
8
|
-
s.date = "
|
8
|
+
s.date = "2009-08-28"
|
9
9
|
s.summary = "Fast C-based buffer for non-blocking I/O"
|
10
10
|
s.platform = Gem::Platform::RUBY
|
11
11
|
s.required_ruby_version = '>= 1.8.6'
|
data/spec/buffer_spec.rb
CHANGED
@@ -5,40 +5,43 @@ describe IO::Buffer do
|
|
5
5
|
@buffer = IO::Buffer.new
|
6
6
|
@buffer.size.should == 0
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
it "appends data" do
|
10
10
|
@buffer.append "foo"
|
11
11
|
@buffer.size.should == 3
|
12
|
-
|
13
|
-
@buffer
|
12
|
+
|
13
|
+
@buffer << "bar"
|
14
14
|
@buffer.size.should == 6
|
15
|
-
|
16
|
-
@buffer.
|
15
|
+
|
16
|
+
@buffer.write "baz"
|
17
|
+
@buffer.size.should == 9
|
18
|
+
|
19
|
+
@buffer.read.should == "foobarbaz"
|
17
20
|
@buffer.size.should == 0
|
18
21
|
end
|
19
|
-
|
22
|
+
|
20
23
|
it "prepends data" do
|
21
24
|
@buffer.prepend "foo"
|
22
25
|
@buffer.size.should == 3
|
23
|
-
|
26
|
+
|
24
27
|
@buffer.prepend "bar"
|
25
28
|
@buffer.size.should == 6
|
26
|
-
|
29
|
+
|
27
30
|
@buffer.read.should == "barfoo"
|
28
31
|
@buffer.size.should == 0
|
29
32
|
end
|
30
|
-
|
33
|
+
|
31
34
|
it "mixes prepending and appending properly" do
|
32
35
|
source_data = %w{foo bar baz qux}
|
33
36
|
actions = permutator([:append, :prepend] * 2)
|
34
|
-
|
37
|
+
|
35
38
|
actions.each do |sequence|
|
36
39
|
sequence.each_with_index do |entry, i|
|
37
40
|
@buffer.send(entry, source_data[i])
|
38
41
|
end
|
39
|
-
|
42
|
+
|
40
43
|
@buffer.size.should == sequence.size * 3
|
41
|
-
|
44
|
+
|
42
45
|
i = 0
|
43
46
|
expected = sequence.inject('') do |str, action|
|
44
47
|
case action
|
@@ -47,18 +50,18 @@ describe IO::Buffer do
|
|
47
50
|
when :prepend
|
48
51
|
str = source_data[i] + str
|
49
52
|
end
|
50
|
-
|
53
|
+
|
51
54
|
i += 1
|
52
55
|
str
|
53
56
|
end
|
54
|
-
|
57
|
+
|
55
58
|
@buffer.read.should == expected
|
56
59
|
end
|
57
60
|
end
|
58
|
-
|
61
|
+
|
59
62
|
it "reads data in chunks properly" do
|
60
63
|
@buffer.append "foobarbazqux"
|
61
|
-
|
64
|
+
|
62
65
|
@buffer.read(1).should == 'f'
|
63
66
|
@buffer.read(2).should == 'oo'
|
64
67
|
@buffer.read(3).should == 'bar'
|
@@ -66,51 +69,51 @@ describe IO::Buffer do
|
|
66
69
|
@buffer.read(1).should == 'u'
|
67
70
|
@buffer.read(2).should == 'x'
|
68
71
|
end
|
69
|
-
|
72
|
+
|
70
73
|
it "converts to a string" do
|
71
74
|
@buffer.append "foobar"
|
72
75
|
@buffer.to_str == "foobar"
|
73
76
|
end
|
74
|
-
|
77
|
+
|
75
78
|
it "clears data" do
|
76
79
|
@buffer.append "foo"
|
77
80
|
@buffer.prepend "bar"
|
78
|
-
|
81
|
+
|
79
82
|
@buffer.clear
|
80
83
|
@buffer.size.should == 0
|
81
84
|
@buffer.read.should == ""
|
82
|
-
|
85
|
+
|
83
86
|
@buffer.prepend "foo"
|
84
87
|
@buffer.prepend "bar"
|
85
88
|
@buffer.append "baz"
|
86
|
-
|
89
|
+
|
87
90
|
@buffer.clear
|
88
91
|
@buffer.size.should == 0
|
89
92
|
@buffer.read.should == ""
|
90
93
|
end
|
91
|
-
|
94
|
+
|
92
95
|
it "knows when it's empty" do
|
93
96
|
@buffer.should be_empty
|
94
97
|
@buffer.append "foo"
|
95
98
|
@buffer.should_not be_empty
|
96
99
|
end
|
97
|
-
|
100
|
+
|
98
101
|
#######
|
99
102
|
private
|
100
103
|
#######
|
101
|
-
|
104
|
+
|
102
105
|
def permutator(input)
|
103
106
|
output = []
|
104
107
|
return output if input.empty?
|
105
|
-
|
108
|
+
|
106
109
|
(0..input.size - 1).inject([]) do |a, n|
|
107
110
|
if a.empty?
|
108
111
|
input.each { |x| output << [x] }
|
109
112
|
else
|
110
113
|
input.each { |x| output += a.map { |y| [x, *y] } }
|
111
114
|
end
|
112
|
-
|
115
|
+
|
113
116
|
output.dup
|
114
117
|
end
|
115
118
|
end
|
116
|
-
end
|
119
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iobuffer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Arcieri
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-08-28 00:00:00 -06:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -24,11 +24,7 @@ extra_rdoc_files:
|
|
24
24
|
- README
|
25
25
|
- CHANGES
|
26
26
|
files:
|
27
|
-
- ext/conftest.dSYM
|
28
|
-
- ext/conftest.dSYM/Contents
|
29
27
|
- ext/conftest.dSYM/Contents/Info.plist
|
30
|
-
- ext/conftest.dSYM/Contents/Resources
|
31
|
-
- ext/conftest.dSYM/Contents/Resources/DWARF
|
32
28
|
- ext/conftest.dSYM/Contents/Resources/DWARF/conftest
|
33
29
|
- ext/extconf.rb
|
34
30
|
- ext/iobuffer.c
|
@@ -43,6 +39,8 @@ files:
|
|
43
39
|
- CHANGES
|
44
40
|
has_rdoc: true
|
45
41
|
homepage: http://rev.rubyforge.org
|
42
|
+
licenses: []
|
43
|
+
|
46
44
|
post_install_message:
|
47
45
|
rdoc_options:
|
48
46
|
- --title
|
@@ -67,9 +65,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
67
65
|
requirements: []
|
68
66
|
|
69
67
|
rubyforge_project: rev
|
70
|
-
rubygems_version: 1.3.
|
68
|
+
rubygems_version: 1.3.5
|
71
69
|
signing_key:
|
72
|
-
specification_version:
|
70
|
+
specification_version: 3
|
73
71
|
summary: Fast C-based buffer for non-blocking I/O
|
74
72
|
test_files: []
|
75
73
|
|