forked from zslayton/stomp-rs
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmessage_builder.rs
39 lines (35 loc) · 1.05 KB
/
message_builder.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use crate::frame::Frame;
use crate::option_setter::OptionSetter;
use crate::session::{OutstandingReceipt, ReceiptRequest, Session};
pub struct MessageBuilder<'a> {
pub session: &'a mut Session,
pub frame: Frame,
pub receipt_request: Option<ReceiptRequest>,
}
impl<'a> MessageBuilder<'a> {
pub fn new(session: &'a mut Session, frame: Frame) -> Self {
MessageBuilder {
session: session,
frame: frame,
receipt_request: None,
}
}
#[allow(dead_code)]
pub fn send(self) {
if self.receipt_request.is_some() {
let request = self.receipt_request.unwrap();
self.session
.state
.outstanding_receipts
.insert(request.id, OutstandingReceipt::new(self.frame.clone()));
}
self.session.send_frame(self.frame)
}
#[allow(dead_code)]
pub fn with<T>(self, option_setter: T) -> MessageBuilder<'a>
where
T: OptionSetter<MessageBuilder<'a>>,
{
option_setter.set_option(self)
}
}