rxio 0.13.4 → 0.13.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +34 -3
- data/lib/rxio/io_base.rb +4 -1
- data/lib/rxio/service.rb +9 -9
- data/lib/rxio/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f2483582cc33b26a5a390939ea4982d3c65d2875
|
4
|
+
data.tar.gz: f8ed5185e48b2f1bd2a83b5e11cb7b7c5be65b36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f7bf6ab91a394e2f5b89266e9f991c558aff97dd693cb6dd62cee7b63e4f374691e366c124fdf9d5d7f23076c5181db4caa1afd1bb03de250c1608b2edb09f90
|
7
|
+
data.tar.gz: 30f9be8aeb50ec8c440b89c1c684402671038ddf2bdab4787eff5ae186c73f9fc88faa12e64fa472f3cf9313d2137ac0e12ff2ed070a5f10e4f747482976dc99
|
data/README.md
CHANGED
@@ -313,16 +313,47 @@ puts 'Client has terminated!'
|
|
313
313
|
|
314
314
|
Whenever an error occurs as the result of handling a client's message should can be logged through the *client_error* method in *RxIO::Service*.
|
315
315
|
The default implementation of this method simply spits out the error on STDOUT and drops the client.
|
316
|
-
It can be overloaded to provide custom functionality
|
316
|
+
It can be overloaded to provide custom functionality such as proper logging or more complex logic.
|
317
317
|
|
318
318
|
```ruby
|
319
319
|
# Default implementation for 'client_error'
|
320
320
|
def client_error c, e
|
321
|
-
puts "[!] ERROR [#{c[:peer][:addr]}:#{c[:peer][:
|
322
|
-
c
|
321
|
+
puts "[!] ERROR [#{c[:peer][:addr]}:#{c[:peer][:port]}] - #{e}"
|
322
|
+
drop_endpoint c
|
323
323
|
end
|
324
324
|
```
|
325
325
|
|
326
|
+
Usage:
|
327
|
+
|
328
|
+
```ruby
|
329
|
+
#!/usr/bin/env ruby
|
330
|
+
|
331
|
+
require 'rxio'
|
332
|
+
|
333
|
+
# Echo Service Class
|
334
|
+
class EchoService < RxIO::Service
|
335
|
+
|
336
|
+
# ...
|
337
|
+
|
338
|
+
# Echo Service Handler Module
|
339
|
+
module EchoHandler
|
340
|
+
|
341
|
+
# ...
|
342
|
+
|
343
|
+
# Handle Message
|
344
|
+
def self.handle_msg client, msg
|
345
|
+
|
346
|
+
# Everything is an error
|
347
|
+
client[:serv].on_error client, 'Invalid Message Structure'
|
348
|
+
end
|
349
|
+
end
|
350
|
+
end
|
351
|
+
|
352
|
+
# Run the service
|
353
|
+
es = EchoService.new
|
354
|
+
es.run
|
355
|
+
```
|
356
|
+
|
326
357
|
## License
|
327
358
|
|
328
359
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/lib/rxio/io_base.rb
CHANGED
@@ -20,7 +20,7 @@ module RxIO
|
|
20
20
|
@service_handler.filter_input endpoint, chunk
|
21
21
|
|
22
22
|
# Process Messages
|
23
|
-
@service_handler.handle_msg endpoint, endpoint[:msgs].shift until endpoint[:msgs].empty?
|
23
|
+
@service_handler.handle_msg endpoint, endpoint[:msgs].shift until endpoint[:msgs].empty? || endpoint[:dying]
|
24
24
|
end
|
25
25
|
|
26
26
|
# Read Socket
|
@@ -69,6 +69,9 @@ module RxIO
|
|
69
69
|
# @param [Hash] endpoint
|
70
70
|
def drop_endpoint endpoint
|
71
71
|
|
72
|
+
# Mark as Dying
|
73
|
+
endpoint[:dying] = true
|
74
|
+
|
72
75
|
# Notify Service Handler
|
73
76
|
@service_handler.on_drop endpoint if @service_handler.respond_to? :on_drop
|
74
77
|
|
data/lib/rxio/service.rb
CHANGED
@@ -86,6 +86,15 @@ module RxIO
|
|
86
86
|
@stop = true
|
87
87
|
end
|
88
88
|
|
89
|
+
# Client Error
|
90
|
+
# Handles an Error from a Client
|
91
|
+
# @param [Hash] c Client Hash
|
92
|
+
# @param [String] e Error String
|
93
|
+
def client_error c, e
|
94
|
+
puts "[!] ERROR [#{c[:peer][:addr]}:#{c[:peer][:port]}] - #{e}"
|
95
|
+
drop_endpoint c
|
96
|
+
end
|
97
|
+
|
89
98
|
# Privates
|
90
99
|
private
|
91
100
|
|
@@ -179,14 +188,5 @@ module RxIO
|
|
179
188
|
# Kill Socket
|
180
189
|
c[:sock].close rescue nil
|
181
190
|
end
|
182
|
-
|
183
|
-
# Client Error
|
184
|
-
# Handles an Error from a Client
|
185
|
-
# @param [Hash] c Client Hash
|
186
|
-
# @param [String] e Error String
|
187
|
-
def client_error c, e
|
188
|
-
puts "[!] ERROR [#{c[:peer][:addr]}:#{c[:peer][:name]}] - #{e}"
|
189
|
-
c[:sock].close rescue nil
|
190
|
-
end
|
191
191
|
end
|
192
192
|
end
|
data/lib/rxio/version.rb
CHANGED