aboutsummaryrefslogtreecommitdiff
path: root/src/transaction/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/transaction/mod.rs')
-rw-r--r--src/transaction/mod.rs23
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);