Skip to content

Commit 2babf66

Browse files
committed
foobar
1 parent b69b55b commit 2babf66

File tree

5 files changed

+26
-40
lines changed

5 files changed

+26
-40
lines changed

rsocket/src/frame/mod.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -167,14 +167,14 @@ impl Frame {
167167
body.map(|it| Frame::new(sid, it, flag))
168168
}
169169

170-
pub fn is_followable(&self) -> bool {
170+
pub(crate) fn is_followable_or_payload(&self) -> (bool, bool) {
171171
match &self.body {
172-
Body::RequestFNF(_) => true,
173-
Body::RequestResponse(_) => true,
174-
Body::RequestStream(_) => true,
175-
Body::RequestChannel(_) => true,
176-
Body::Payload(_) => true,
177-
_ => false,
172+
Body::RequestFNF(_) => (true, false),
173+
Body::RequestResponse(_) => (true, false),
174+
Body::RequestStream(_) => (true, false),
175+
Body::RequestChannel(_) => (true, false),
176+
Body::Payload(_) => (true, true),
177+
_ => (false, false),
178178
}
179179
}
180180

rsocket/src/frame/setup.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ impl Writeable for Setup {
3535
bf.put_u16(b.len() as u16);
3636
bf.put(b.bytes());
3737
}
38-
// TODO: remove string clone
3938
bf.put_u8(self.mime_metadata.len() as u8);
4039
bf.put(Bytes::from(self.mime_metadata.clone()));
4140
bf.put_u8(self.mime_data.len() as u8);

rsocket/src/frame/utils.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ impl PayloadSupport {
1717
a + b
1818
}
1919

20-
// TODO: change to Result
2120
pub fn read(flag: u16, bf: &mut BytesMut) -> (Option<Bytes>, Option<Bytes>) {
2221
let m: Option<Bytes> = if flag & FLAG_METADATA != 0 {
2322
let n = U24::read_advance(bf);

rsocket/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@
2424
//! The easiest way to get started is to use RSocket. Do this by enabling TCP transport support.
2525
//!
2626
//! ```toml
27-
//! rsocket_rust = "0.5"
28-
//! rsocket_rust_transport_tcp = "0.5"
27+
//! rsocket_rust = "0.5.1"
28+
//! rsocket_rust_transport_tcp = "0.5.1"
2929
//!
3030
//! # If you want to use websocket transport instead.
31-
//! # rsocket_rust_transport_websocket = "0.5"
31+
//! # rsocket_rust_transport_websocket = "0.5.1"
3232
//! ```
3333
//!
3434
//! # Examples

rsocket/src/transport/socket.rs

Lines changed: 16 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -197,21 +197,27 @@ where
197197
}
198198
}
199199

200-
// TODO: support fragmentation
201200
async fn join_frame(&self, input: Frame) -> Option<Frame> {
202-
if !input.is_followable() {
201+
let (is_follow, is_payload) = input.is_followable_or_payload();
202+
if !is_follow {
203203
return Some(input);
204204
}
205205
let sid = input.get_stream_id();
206206
let mut joiners = self.joiners.lock().await;
207207

208208
if input.get_flag() & frame::FLAG_FOLLOW != 0 {
209+
// TODO: check conflict
209210
(*joiners)
210211
.entry(sid)
211212
.or_insert_with(Joiner::new)
212213
.push(input);
213214
return None;
214215
}
216+
217+
if !is_payload {
218+
return Some(input);
219+
}
220+
215221
match (*joiners).remove(&sid) {
216222
None => Some(input),
217223
Some(mut joiner) => {
@@ -266,6 +272,10 @@ where
266272

267273
#[inline]
268274
async fn on_error(&self, sid: u32, flag: u16, input: frame::Error) {
275+
{
276+
let mut joiners = self.joiners.lock().await;
277+
(*joiners).remove(&sid);
278+
}
269279
// pick handler
270280
let mut handlers = self.handlers.lock().await;
271281
if let Some(handler) = (*handlers).remove(&sid) {
@@ -282,6 +292,10 @@ where
282292

283293
#[inline]
284294
async fn on_cancel(&self, sid: u32, _flag: u16) {
295+
{
296+
let mut joiners = self.joiners.lock().await;
297+
(*joiners).remove(&sid);
298+
}
285299
let mut handlers = self.handlers.lock().await;
286300
if let Some(handler) = (*handlers).remove(&sid) {
287301
let e = Err(RSocketError::from(ErrorKind::Cancelled()));
@@ -343,32 +357,6 @@ where
343357
}
344358
Entry::Vacant(v) => warn!("invalid payload id {}: no such request!", sid),
345359
}
346-
347-
// match (*handlers).remove(&sid).unwrap() {
348-
// Handler::ReqRR(sender) => sender.send(Ok(input)).unwrap(),
349-
// Handler::ResRR(c) => unreachable!(),
350-
// Handler::ReqRS(sender) => {
351-
// if flag & frame::FLAG_NEXT != 0 {
352-
// sender
353-
// .unbounded_send(Ok(input))
354-
// .expect("Send payload response failed.");
355-
// }
356-
// if flag & frame::FLAG_COMPLETE == 0 {
357-
// (*handlers).insert(sid, Handler::ReqRS(sender));
358-
// }
359-
// }
360-
// Handler::ReqRC(sender) => {
361-
// // TODO: support channel
362-
// if flag & frame::FLAG_NEXT != 0 {
363-
// sender
364-
// .unbounded_send(Ok(input))
365-
// .expect("Send payload response failed");
366-
// }
367-
// if flag & frame::FLAG_COMPLETE == 0 {
368-
// (*handlers).insert(sid, Handler::ReqRC(sender));
369-
// }
370-
// }
371-
// };
372360
}
373361

374362
#[inline]

0 commit comments

Comments
 (0)