|
32 | 32 | handlers: Arc<Mutex<HashMap<u32, Handler>>>, |
33 | 33 | canceller: Tx<u32>, |
34 | 34 | splitter: Option<Splitter>, |
| 35 | + joiners: Arc<Mutex<HashMap<u32, Joiner>>>, |
35 | 36 | } |
36 | 37 |
|
37 | 38 | #[derive(Clone)] |
|
66 | 67 | canceller: canceller_tx, |
67 | 68 | responder: Responder::new(), |
68 | 69 | handlers: Arc::new(Mutex::new(HashMap::new())), |
| 70 | + joiners: Arc::new(Mutex::new(HashMap::new())), |
69 | 71 | splitter, |
70 | 72 | }; |
71 | 73 |
|
@@ -188,6 +190,29 @@ where |
188 | 190 | } |
189 | 191 | } |
190 | 192 |
|
| 193 | + async fn join_frame(&self, input: Frame) { |
| 194 | + let sid = input.get_stream_id(); |
| 195 | + let mut joiners = self.joiners.lock().await; |
| 196 | + match (*joiners).remove(&sid) { |
| 197 | + Some(joiner) => { |
| 198 | + // joiner.push(input); |
| 199 | + } |
| 200 | + None => {} |
| 201 | + } |
| 202 | + } |
| 203 | + |
| 204 | + async fn try_join(&self, input: Frame) { |
| 205 | + let follow = input.get_flag() & frame::FLAG_FOLLOW != 0; |
| 206 | + match input.get_frame_type() { |
| 207 | + frame::TYPE_REQUEST_RESPONSE => if follow {}, |
| 208 | + frame::TYPE_REQUEST_STREAM => {} |
| 209 | + frame::TYPE_REQUEST_FNF => {} |
| 210 | + frame::TYPE_REQUEST_CHANNEL => {} |
| 211 | + frame::TYPE_PAYLOAD => {} |
| 212 | + _ => {} |
| 213 | + } |
| 214 | + } |
| 215 | + |
191 | 216 | #[inline] |
192 | 217 | async fn on_error(&self, sid: u32, flag: u16, input: frame::Error) { |
193 | 218 | // pick handler |
|
0 commit comments