rxio 0.13.4 → 0.13.5
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/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