use super::{Publisher, SessionError};
use crate::coding::ReasonPhrase;
use crate::message;
use crate::serve;
pub struct TrackStatusRequested {
publisher: Publisher,
pub request_msg: message::TrackStatus,
}
impl TrackStatusRequested {
pub fn new(publisher: Publisher, request_msg: message::TrackStatus) -> Self {
Self {
publisher,
request_msg,
}
}
pub fn respond_error(
&mut self,
error_code: u64,
error_message: &str,
) -> Result<(), SessionError> {
let status_error = message::TrackStatusError {
id: self.request_msg.id,
error_code,
reason_phrase: ReasonPhrase(error_message.to_string()),
};
self.publisher.send_message(status_error);
Ok(())
}
pub fn respond_ok(mut self, track: &serve::TrackReader) -> Result<(), SessionError> {
self.publisher.send_message(message::TrackStatusOk {
id: self.request_msg.id,
track_alias: self.request_msg.id, expires: 0, group_order: message::GroupOrder::Ascending, content_exists: track.largest_location().is_some(),
largest_location: track.largest_location(),
params: Default::default(),
});
Ok(())
}
}