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 +4 -4
- data/README.md +24 -0
- data/lib/rxio/io_base.rb +1 -1
- data/lib/rxio/service.rb +4 -0
- 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: 94ecbb52435910bad4b3e3f01ffa4473069b6147
|
4
|
+
data.tar.gz: 72042a32271c9b1a64fe1b0f76ecbc790ba55e6c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
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