rxio 1.2.4 → 1.2.6

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: 061b52b3f4d31432e5d37fe78588d6b611fb8f7a
4
- data.tar.gz: 71a684798b57c87112b8e7b7d5211dfed3e2bc33
3
+ metadata.gz: 94ecbb52435910bad4b3e3f01ffa4473069b6147
4
+ data.tar.gz: 72042a32271c9b1a64fe1b0f76ecbc790ba55e6c
5
5
  SHA512:
6
- metadata.gz: 2165483d9a090954fc497b3337cf4b2c176e975634319baabe67ea0a5ecde447dcd29b3ce2b4ca12cbb478eefacedebc6f6a350138782faa1b171bf8e776175e
7
- data.tar.gz: 528ab8ffb45bff289391c7b735b239112b77cff431f0ff9b032de426d1bf8226092adc003a807ff36f0ca164e3a18e2a07bc9532def20d49418d7e9048176ffe
6
+ metadata.gz: 949d25534343298c94703f5738ec03762c68fcd34a35d3549f2e1afbe69d21e2d0f1a9d4686809d982d8e5c5081461ab8aa349544e3a66d4ebecc2183696d7a1
7
+ data.tar.gz: cab01613035d94a02ae96f891ac64795ad6a4dd69b4156e6b4ce2ad6de448367621fbb08e3a4b23fbea6971f6c6ba97cc6db5e3962ad5678c2278118e295527c
data/README.md CHANGED
@@ -133,6 +133,30 @@ Note: this method does not perform any encoding or transformation on the data. I
133
133
 
134
134
  Used to add a data chunk to the endpoint's input buffer.
135
135
 
136
+ ### Dropping Clients
137
+
138
+ To properly drop a client (ensuring that any buffered data is flushed out), simply set its *:drop* attribute to anything truthy:
139
+
140
+ ```ruby
141
+ # Foo Service Handler Module
142
+ module FooHandler
143
+
144
+ # Extend BinDelim I/O Filter
145
+ extend RxIO::IOFilters::BinDelim
146
+
147
+ # Set Message Delimiter
148
+ msg_delim "\n"
149
+
150
+ # Handle Message
151
+ def handle_msg client, msg
152
+
153
+ # Echo message and immediately drop client
154
+ send_msg client, msg
155
+ client[:drop] = true
156
+ end
157
+ end
158
+ ```
159
+
136
160
  ### Provided Filters
137
161
 
138
162
  Some generic filters are provided as part of the *RxIO::IOFilters* module.
data/lib/rxio/io_base.rb CHANGED
@@ -58,7 +58,7 @@ module RxIO
58
58
  done = false
59
59
  chunk = ''
60
60
  rdstr = ''
61
- until done || !chunk
61
+ until done || !rdstr
62
62
  begin
63
63
  rdstr = s.read_nonblock(CHUNK_SIZE)
64
64
  chunk << rdstr if rdstr
data/lib/rxio/service.rb CHANGED
@@ -113,6 +113,10 @@ module RxIO
113
113
  # Handle I/O
114
114
  rd.each { |s| s == @serv ? acpt_sock(s) : read_sock(s) } if rd
115
115
  wr.each { |s| write_sock s } if wr
116
+
117
+ # Drop Clients
118
+ drop = @clients.select { |c| c[:lock].synchronize { c[:obuf].empty? && c[:drop] } }
119
+ drop_endpoint drop.shift until drop.empty?
116
120
  end
117
121
 
118
122
  # Register Client:
data/lib/rxio/version.rb CHANGED
@@ -5,5 +5,5 @@
5
5
  module RxIO
6
6
 
7
7
  # Version
8
- VERSION = '1.2.4'
8
+ VERSION = '1.2.6'
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: 1.2.4
4
+ version: 1.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eresse