scufflecloud_ingest/services/
rtmp.rs1use scuffle_rtmp::session::server::{ServerSessionError, SessionData, SessionHandler};
2
3pub(crate) struct Handler;
4
5impl SessionHandler for Handler {
6 async fn on_data(&mut self, stream_id: u32, data: SessionData) -> Result<(), ServerSessionError> {
7 match data {
9 SessionData::Amf0 { timestamp, data } => {
10 tracing::info!(stream_id, timestamp, data_len = data.len(), "received AMF0 metadata");
11 }
12 SessionData::Audio { timestamp, data } => {
13 tracing::info!(stream_id, timestamp, data_len = data.len(), "received audio data");
14 }
15 SessionData::Video { timestamp, data } => {
16 tracing::info!(stream_id, timestamp, data_len = data.len(), "received video data");
17 }
18 }
19
20 Ok(())
21 }
22
23 async fn on_publish(&mut self, stream_id: u32, app_name: &str, stream_name: &str) -> Result<(), ServerSessionError> {
24 tracing::info!(stream_id, app_name, stream_name, "stream published");
26 Ok(())
27 }
28
29 async fn on_unpublish(&mut self, stream_id: u32) -> Result<(), ServerSessionError> {
30 tracing::info!(stream_id, "stream unpublished");
32 Ok(())
33 }
34}