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 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