rxio 1.2.4 → 1.2.6

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