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