pub async fn process_stream_protocol<C, V>(
codec: C,
control: V,
) -> Result<(Sender<(PeerId, <C as Decoder>::Item)>, Receiver<(PeerId, <C as Decoder>::Item)>)>where
C: Encoder<<C as Decoder>::Item> + Decoder + Send + Sync + Clone + 'static,
<C as Encoder<<C as Decoder>::Item>>::Error: Debug + Display + Send + Sync + 'static,
<C as Decoder>::Error: Debug + Display + Send + Sync + 'static,
<C as Decoder>::Item: Send + 'static,
V: BidirectionalStreamControl + Clone + Send + Sync + 'static,