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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 62f06a50cce6b403b28c09502aba950ec863fd16
4
- data.tar.gz: a7b84641ff2cde46908d8afc3e4c09d03f6e8c47
3
+ metadata.gz: f2483582cc33b26a5a390939ea4982d3c65d2875
4
+ data.tar.gz: f8ed5185e48b2f1bd2a83b5e11cb7b7c5be65b36
5
5
  SHA512:
6
- metadata.gz: 673842e6d6b54ba630e1bc0f9c6170c7aec543bf98ac171cf55821c22339a69ada60062b2c9dbbfa4a7486e31fb25ebd88eeed03e80e91bc3cd0a08832838d56
7
- data.tar.gz: f661465b2dc21407b63c38068441d1e6148c064b4d15d5233488eb147d832b409e681e03d9b69ea772b17aecb6881432bea957670ee61c6530ba88d66b589c88
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 upon client errors.
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][:name]}] - #{e}"
322
- c[:sock].close rescue nil
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
@@ -5,5 +5,5 @@
5
5
  module RxIO
6
6
 
7
7
  # Version
8
- VERSION = '0.13.4'
8
+ VERSION = '0.13.5'
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rxio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.4
4
+ version: 0.13.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eresse