diff options
Diffstat (limited to 'src/transaction/mod.rs')
-rw-r--r-- | src/transaction/mod.rs | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/transaction/mod.rs b/src/transaction/mod.rs index 3be9544..601b134 100644 --- a/src/transaction/mod.rs +++ b/src/transaction/mod.rs @@ -1,5 +1,12 @@ +pub mod auth; + use crate::{ - encoding::{headers::CSeq, request::Request, response::Response, Message}, + encoding::{ + headers::{CSeq, CallID}, + request::Request, + response::Response, + Message, + }, transport::Transport, }; use anyhow::{anyhow, Result}; @@ -48,6 +55,20 @@ impl<T: Transport> TransactionUser<T> { } } } + pub async fn respond(&self, req: &Request, mut resp: Response) -> Result<()> { + resp.headers.insert( + req.headers + .get::<CSeq>() + .ok_or(anyhow!("cseq is mandatory"))??, + ); + resp.headers.insert( + req.headers + .get::<CallID>() + .ok_or(anyhow!("call-id is mandatory"))??, + ); + self.transport.send(Message::Response(resp)).await?; + Ok(()) + } pub async fn transact(&self, mut request: Request) -> Result<mpsc::Receiver<Response>> { let seq = self.sequence.fetch_add(1, Ordering::Relaxed); |