p2p2 0.6.1 → 0.6.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.
- checksums.yaml +4 -4
- data/lib/p2p2/p1.rb +35 -9
- data/lib/p2p2/p2.rb +35 -9
- data/lib/p2p2/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2af1321c46206a876f75cd74f50aab8b5ed2951d92ae7e70c2dce68d1b29a9cc
|
4
|
+
data.tar.gz: 1a85a3f615031cc62d321d0aedb1400417c4a312e586081d95ca0784192ccf34
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af88e6936b1bc6ffc54fc50a42591a40d218a8ce46eb8df3396065575a3b8b5422fa5ecfe3427d45eff9efdf9408f1d99aba988a49995bc207b9f13fe4954561
|
7
|
+
data.tar.gz: affad3adbe2c1d027fe55309e1dc915e9687af5f256a962aef34c1c260943e2347bf1c4d54d924373cefbe3e6985e8601295eae690f9169efe0078b37060107f
|
data/lib/p2p2/p1.rb
CHANGED
@@ -57,6 +57,8 @@ module P2p2
|
|
57
57
|
|
58
58
|
ws.each do | sock |
|
59
59
|
case @roles[ sock ]
|
60
|
+
when :room
|
61
|
+
write_room( sock )
|
60
62
|
when :p1
|
61
63
|
write_p1( sock )
|
62
64
|
when :app
|
@@ -93,17 +95,14 @@ module P2p2
|
|
93
95
|
data = sock.read_nonblock( PACK_SIZE )
|
94
96
|
rescue IO::WaitReadable, Errno::EINTR, IO::WaitWritable => e
|
95
97
|
return
|
96
|
-
rescue EOFError, Errno::ECONNRESET => e
|
98
|
+
rescue Errno::ECONNREFUSED, EOFError, Errno::ECONNRESET => e
|
97
99
|
puts "read room #{ e.class } #{ Time.new }"
|
98
100
|
|
99
101
|
if @is_renew
|
100
102
|
raise e
|
101
103
|
end
|
102
104
|
|
103
|
-
|
104
|
-
sleep 5
|
105
|
-
new_room
|
106
|
-
@is_renew = true
|
105
|
+
add_closing( sock )
|
107
106
|
return
|
108
107
|
end
|
109
108
|
|
@@ -197,6 +196,29 @@ module P2p2
|
|
197
196
|
add_write( @p1, data, NEED_CHUNK )
|
198
197
|
end
|
199
198
|
|
199
|
+
def write_room( sock )
|
200
|
+
if @closings.include?( sock )
|
201
|
+
close_sock( sock )
|
202
|
+
sleep 5
|
203
|
+
new_room
|
204
|
+
@is_renew = true
|
205
|
+
@closings.delete( sock )
|
206
|
+
|
207
|
+
return
|
208
|
+
end
|
209
|
+
|
210
|
+
info = @infos[ sock ]
|
211
|
+
data = info[ :wbuff ]
|
212
|
+
|
213
|
+
if data.empty?
|
214
|
+
@writes.delete( sock )
|
215
|
+
return
|
216
|
+
end
|
217
|
+
|
218
|
+
sock.write( data )
|
219
|
+
info[ :wbuff ].clear
|
220
|
+
end
|
221
|
+
|
200
222
|
def write_p1( sock )
|
201
223
|
if @closings.include?( sock )
|
202
224
|
close_sock( sock )
|
@@ -343,9 +365,15 @@ module P2p2
|
|
343
365
|
room = Socket.new( Socket::AF_INET, Socket::SOCK_STREAM, 0 )
|
344
366
|
room.setsockopt( Socket::SOL_SOCKET, Socket::SO_REUSEADDR, 1 )
|
345
367
|
room.setsockopt( Socket::SOL_TCP, Socket::TCP_NODELAY, 1 )
|
346
|
-
room.connect( @roomd_sockaddr )
|
347
368
|
|
369
|
+
begin
|
370
|
+
room.connect_nonblock( @roomd_sockaddr )
|
371
|
+
rescue IO::WaitWritable, Errno::EINTR
|
372
|
+
end
|
373
|
+
|
374
|
+
bytes = @title.unpack( "C*" ).map{ | c | c.chr }.join
|
348
375
|
room_info = {
|
376
|
+
wbuff: [ [ SET_TITLE, bytes.size ].pack( 'Cn' ), bytes ].join,
|
349
377
|
p2_sockaddr: nil,
|
350
378
|
rep2p: 0
|
351
379
|
}
|
@@ -354,9 +382,7 @@ module P2p2
|
|
354
382
|
@roles[ room ] = :room
|
355
383
|
@infos[ room ] = room_info
|
356
384
|
@reads << room
|
357
|
-
|
358
|
-
bytes = @title.unpack( "C*" ).map{ | c | c.chr }.join
|
359
|
-
@room.write( [ [ SET_TITLE, bytes.size ].pack( 'Cn' ), bytes ].join )
|
385
|
+
@writes << room
|
360
386
|
end
|
361
387
|
|
362
388
|
def new_p1
|
data/lib/p2p2/p2.rb
CHANGED
@@ -59,6 +59,8 @@ module P2p2
|
|
59
59
|
|
60
60
|
ws.each do | sock |
|
61
61
|
case @roles[ sock ]
|
62
|
+
when :room
|
63
|
+
write_room( sock )
|
62
64
|
when :p2
|
63
65
|
write_p2( sock )
|
64
66
|
when :app
|
@@ -154,17 +156,14 @@ module P2p2
|
|
154
156
|
data = sock.read_nonblock( PACK_SIZE )
|
155
157
|
rescue IO::WaitReadable, Errno::EINTR, IO::WaitWritable => e
|
156
158
|
return
|
157
|
-
rescue EOFError, Errno::ECONNRESET => e
|
159
|
+
rescue Errno::ECONNREFUSED, EOFError, Errno::ECONNRESET => e
|
158
160
|
puts "read room #{ e.class } #{ Time.new }"
|
159
161
|
|
160
162
|
if @is_renew
|
161
163
|
raise e
|
162
164
|
end
|
163
165
|
|
164
|
-
|
165
|
-
sleep 5
|
166
|
-
new_room
|
167
|
-
@is_renew = true
|
166
|
+
add_closing( sock )
|
168
167
|
return
|
169
168
|
end
|
170
169
|
|
@@ -209,6 +208,29 @@ module P2p2
|
|
209
208
|
add_write( @app, data, NEED_CHUNK )
|
210
209
|
end
|
211
210
|
|
211
|
+
def write_room( sock )
|
212
|
+
if @closings.include?( sock )
|
213
|
+
close_sock( sock )
|
214
|
+
sleep 5
|
215
|
+
new_room
|
216
|
+
@is_renew = true
|
217
|
+
@closings.delete( sock )
|
218
|
+
|
219
|
+
return
|
220
|
+
end
|
221
|
+
|
222
|
+
info = @infos[ sock ]
|
223
|
+
data = info[ :wbuff ]
|
224
|
+
|
225
|
+
if data.empty?
|
226
|
+
@writes.delete( sock )
|
227
|
+
return
|
228
|
+
end
|
229
|
+
|
230
|
+
sock.write( data )
|
231
|
+
info[ :wbuff ].clear
|
232
|
+
end
|
233
|
+
|
212
234
|
def write_p2( sock )
|
213
235
|
if @closings.include?( sock )
|
214
236
|
close_sock( sock )
|
@@ -367,9 +389,15 @@ module P2p2
|
|
367
389
|
room = Socket.new( Socket::AF_INET, Socket::SOCK_STREAM, 0 )
|
368
390
|
room.setsockopt( Socket::SOL_SOCKET, Socket::SO_REUSEADDR, 1 )
|
369
391
|
room.setsockopt( Socket::SOL_TCP, Socket::TCP_NODELAY, 1 )
|
370
|
-
room.connect( @roomd_sockaddr )
|
371
392
|
|
393
|
+
begin
|
394
|
+
room.connect_nonblock( @roomd_sockaddr )
|
395
|
+
rescue IO::WaitWritable, Errno::EINTR
|
396
|
+
end
|
397
|
+
|
398
|
+
bytes = @title.unpack( "C*" ).map{ | c | c.chr }.join
|
372
399
|
room_info = {
|
400
|
+
wbuff: [ [ PAIRING, bytes.size ].pack( 'Cn' ), bytes ].join,
|
373
401
|
p1_sockaddr: nil,
|
374
402
|
rep2p: 0
|
375
403
|
}
|
@@ -378,9 +406,7 @@ module P2p2
|
|
378
406
|
@roles[ room ] = :room
|
379
407
|
@infos[ room ] = room_info
|
380
408
|
@reads << room
|
381
|
-
|
382
|
-
bytes = @title.unpack( "C*" ).map{ | c | c.chr }.join
|
383
|
-
@room.write( [ [ PAIRING, bytes.size ].pack( 'Cn' ), bytes ].join )
|
409
|
+
@writes << room
|
384
410
|
end
|
385
411
|
|
386
412
|
def new_p2
|
data/lib/p2p2/version.rb
CHANGED