cool.io 1.2.2 → 1.2.3
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.md +5 -0
- data/ext/libev/ev_select.c +58 -9
- data/lib/cool.io/version.rb +1 -1
- data/spec/dns_spec.rb +1 -1
- data/spec/tcp_server_spec.rb +3 -1
- metadata +30 -16
- checksums.yaml +0 -7
data/CHANGES.md
CHANGED
data/ext/libev/ev_select.c
CHANGED
@@ -67,6 +67,53 @@
|
|
67
67
|
|
68
68
|
#include <string.h>
|
69
69
|
|
70
|
+
#ifdef _WIN32
|
71
|
+
/*
|
72
|
+
########## COOLIO PATCHERY HO! ##########
|
73
|
+
|
74
|
+
Ruby undefs FD_* utilities for own implementation.
|
75
|
+
It converts fd argument into socket handle internally on Windows,
|
76
|
+
so libev should not use Ruby's FD_* utilities.
|
77
|
+
|
78
|
+
Following FD_* utilities come from MinGW.
|
79
|
+
RubyInstaller is built by MinGW so this should work.
|
80
|
+
*/
|
81
|
+
int PASCAL __WSAFDIsSet(SOCKET,fd_set*);
|
82
|
+
#define EV_WIN_FD_CLR(fd,set) do { u_int __i;\
|
83
|
+
for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) {\
|
84
|
+
if (((fd_set *)(set))->fd_array[__i] == (fd)) {\
|
85
|
+
while (__i < ((fd_set *)(set))->fd_count-1) {\
|
86
|
+
((fd_set*)(set))->fd_array[__i] = ((fd_set*)(set))->fd_array[__i+1];\
|
87
|
+
__i++;\
|
88
|
+
}\
|
89
|
+
((fd_set*)(set))->fd_count--;\
|
90
|
+
break;\
|
91
|
+
}\
|
92
|
+
}\
|
93
|
+
} while (0)
|
94
|
+
#define EV_WIN_FD_SET(fd, set) do { u_int __i;\
|
95
|
+
for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) {\
|
96
|
+
if (((fd_set *)(set))->fd_array[__i] == (fd)) {\
|
97
|
+
break;\
|
98
|
+
}\
|
99
|
+
}\
|
100
|
+
if (__i == ((fd_set *)(set))->fd_count) {\
|
101
|
+
if (((fd_set *)(set))->fd_count < FD_SETSIZE) {\
|
102
|
+
((fd_set *)(set))->fd_array[__i] = (fd);\
|
103
|
+
((fd_set *)(set))->fd_count++;\
|
104
|
+
}\
|
105
|
+
}\
|
106
|
+
} while(0)
|
107
|
+
#define EV_WIN_FD_ZERO(set) (((fd_set *)(set))->fd_count=0)
|
108
|
+
#define EV_WIN_FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set *)(set))
|
109
|
+
/* ######################################## */
|
110
|
+
#else
|
111
|
+
#define EV_WIN_FD_CLR FD_CLR
|
112
|
+
#define EV_WIN_FD_SET FD_SET
|
113
|
+
#define EV_WIN_FD_ZERO FD_ZERO
|
114
|
+
#define EV_WIN_FD_ISSET FD_ISSET
|
115
|
+
#endif
|
116
|
+
|
70
117
|
static void
|
71
118
|
select_modify (EV_P_ int fd, int oev, int nev)
|
72
119
|
{
|
@@ -91,17 +138,17 @@ select_modify (EV_P_ int fd, int oev, int nev)
|
|
91
138
|
if ((oev ^ nev) & EV_READ)
|
92
139
|
#endif
|
93
140
|
if (nev & EV_READ)
|
94
|
-
|
141
|
+
EV_WIN_FD_SET (handle, (fd_set *)vec_ri);
|
95
142
|
else
|
96
|
-
|
143
|
+
EV_WIN_FD_CLR (handle, (fd_set *)vec_ri);
|
97
144
|
|
98
145
|
#if EV_SELECT_IS_WINSOCKET
|
99
146
|
if ((oev ^ nev) & EV_WRITE)
|
100
147
|
#endif
|
101
148
|
if (nev & EV_WRITE)
|
102
|
-
|
149
|
+
EV_WIN_FD_SET (handle, (fd_set *)vec_wi);
|
103
150
|
else
|
104
|
-
|
151
|
+
EV_WIN_FD_CLR (handle, (fd_set *)vec_wi);
|
105
152
|
|
106
153
|
#else
|
107
154
|
|
@@ -136,6 +183,8 @@ select_modify (EV_P_ int fd, int oev, int nev)
|
|
136
183
|
}
|
137
184
|
}
|
138
185
|
|
186
|
+
#undef socket
|
187
|
+
|
139
188
|
static void
|
140
189
|
select_poll (EV_P_ ev_tstamp timeout)
|
141
190
|
{
|
@@ -230,10 +279,10 @@ select_poll (EV_P_ ev_tstamp timeout)
|
|
230
279
|
int handle = fd;
|
231
280
|
#endif
|
232
281
|
|
233
|
-
if (
|
234
|
-
if (
|
282
|
+
if (EV_WIN_FD_ISSET (handle, (fd_set *)vec_ro)) events |= EV_READ;
|
283
|
+
if (EV_WIN_FD_ISSET (handle, (fd_set *)vec_wo)) events |= EV_WRITE;
|
235
284
|
#ifdef _WIN32
|
236
|
-
if (
|
285
|
+
if (EV_WIN_FD_ISSET (handle, (fd_set *)vec_eo)) events |= EV_WRITE;
|
237
286
|
#endif
|
238
287
|
|
239
288
|
if (expect_true (events))
|
@@ -279,9 +328,9 @@ select_init (EV_P_ int flags)
|
|
279
328
|
backend_poll = select_poll;
|
280
329
|
|
281
330
|
#if EV_SELECT_USE_FD_SET
|
282
|
-
vec_ri = ev_malloc (sizeof (fd_set));
|
331
|
+
vec_ri = ev_malloc (sizeof (fd_set)); EV_WIN_FD_ZERO ((fd_set *)vec_ri);
|
283
332
|
vec_ro = ev_malloc (sizeof (fd_set));
|
284
|
-
vec_wi = ev_malloc (sizeof (fd_set));
|
333
|
+
vec_wi = ev_malloc (sizeof (fd_set)); EV_WIN_FD_ZERO ((fd_set *)vec_wi);
|
285
334
|
vec_wo = ev_malloc (sizeof (fd_set));
|
286
335
|
#ifdef _WIN32
|
287
336
|
vec_eo = ev_malloc (sizeof (fd_set));
|
data/lib/cool.io/version.rb
CHANGED
data/spec/dns_spec.rb
CHANGED
data/spec/tcp_server_spec.rb
CHANGED
@@ -105,7 +105,8 @@ ensure
|
|
105
105
|
server.close
|
106
106
|
end
|
107
107
|
|
108
|
-
|
108
|
+
# This test should work on Windows
|
109
|
+
describe Coolio::TCPServer, :env => :win do
|
109
110
|
|
110
111
|
it '#run' do
|
111
112
|
test_run("hello").should == "hello"
|
@@ -128,3 +129,4 @@ describe Coolio::TCPServer do
|
|
128
129
|
end
|
129
130
|
|
130
131
|
end
|
132
|
+
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cool.io
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Tony Arcieri
|
@@ -9,48 +10,54 @@ authors:
|
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date: 2014-04-
|
13
|
+
date: 2014-04-25 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: rake-compiler
|
16
17
|
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
17
19
|
requirements:
|
18
|
-
- -
|
20
|
+
- - ~>
|
19
21
|
- !ruby/object:Gem::Version
|
20
22
|
version: 0.8.3
|
21
23
|
type: :development
|
22
24
|
prerelease: false
|
23
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
24
27
|
requirements:
|
25
|
-
- -
|
28
|
+
- - ~>
|
26
29
|
- !ruby/object:Gem::Version
|
27
30
|
version: 0.8.3
|
28
31
|
- !ruby/object:Gem::Dependency
|
29
32
|
name: rspec
|
30
33
|
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
31
35
|
requirements:
|
32
|
-
- -
|
36
|
+
- - ! '>='
|
33
37
|
- !ruby/object:Gem::Version
|
34
38
|
version: 2.13.0
|
35
39
|
type: :development
|
36
40
|
prerelease: false
|
37
41
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
38
43
|
requirements:
|
39
|
-
- -
|
44
|
+
- - ! '>='
|
40
45
|
- !ruby/object:Gem::Version
|
41
46
|
version: 2.13.0
|
42
47
|
- !ruby/object:Gem::Dependency
|
43
48
|
name: rdoc
|
44
49
|
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
45
51
|
requirements:
|
46
|
-
- -
|
52
|
+
- - ! '>='
|
47
53
|
- !ruby/object:Gem::Version
|
48
54
|
version: 3.6.0
|
49
55
|
type: :development
|
50
56
|
prerelease: false
|
51
57
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
52
59
|
requirements:
|
53
|
-
- -
|
60
|
+
- - ! '>='
|
54
61
|
- !ruby/object:Gem::Version
|
55
62
|
version: 3.6.0
|
56
63
|
description: Cool.io provides a high performance event framework for Ruby which uses
|
@@ -65,9 +72,9 @@ extensions:
|
|
65
72
|
- ext/iobuffer/extconf.rb
|
66
73
|
extra_rdoc_files: []
|
67
74
|
files:
|
68
|
-
-
|
69
|
-
-
|
70
|
-
-
|
75
|
+
- .gitignore
|
76
|
+
- .rspec
|
77
|
+
- .travis.yml
|
71
78
|
- CHANGES.md
|
72
79
|
- Gemfile
|
73
80
|
- LICENSE
|
@@ -147,26 +154,33 @@ files:
|
|
147
154
|
- spec/unix_server_spec.rb
|
148
155
|
homepage: http://coolio.github.com
|
149
156
|
licenses: []
|
150
|
-
metadata: {}
|
151
157
|
post_install_message:
|
152
158
|
rdoc_options: []
|
153
159
|
require_paths:
|
154
160
|
- lib
|
155
161
|
required_ruby_version: !ruby/object:Gem::Requirement
|
162
|
+
none: false
|
156
163
|
requirements:
|
157
|
-
- -
|
164
|
+
- - ! '>='
|
158
165
|
- !ruby/object:Gem::Version
|
159
166
|
version: '0'
|
167
|
+
segments:
|
168
|
+
- 0
|
169
|
+
hash: -2054079521512211321
|
160
170
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
171
|
+
none: false
|
161
172
|
requirements:
|
162
|
-
- -
|
173
|
+
- - ! '>='
|
163
174
|
- !ruby/object:Gem::Version
|
164
175
|
version: '0'
|
176
|
+
segments:
|
177
|
+
- 0
|
178
|
+
hash: -2054079521512211321
|
165
179
|
requirements: []
|
166
180
|
rubyforge_project:
|
167
|
-
rubygems_version:
|
181
|
+
rubygems_version: 1.8.23
|
168
182
|
signing_key:
|
169
|
-
specification_version:
|
183
|
+
specification_version: 3
|
170
184
|
summary: A cool framework for doing high performance I/O in Ruby
|
171
185
|
test_files:
|
172
186
|
- spec/async_watcher_spec.rb
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 8df378d986336f5aa0c79e3c5e31f80a1571ab0d
|
4
|
-
data.tar.gz: 2d9c5aa507a285b4ee129c5a8ccfca8c5f5d8586
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: f6a74e7fa7dd6bd728835225ecb8481c2e44a44dad2887aaba7d041d835bdcb76ace90ea2fe4aab6bd5db322f3d9ea0c1e81e4eb68da4a3d75273fdcb6781d86
|
7
|
-
data.tar.gz: deaffe41d393672ffb44c81766460f8e0736a21294e96acabe998fe01ea36dbdd55ef6b1efadf1e675460ffc0be43376052f9a2f4e3344d36e7c8b37730a3bc5
|