mirror of
https://github.com/asciinema/asciinema.git
synced 2026-05-18 05:04:50 +02:00
Send EOT event at the end of the ALiS stream
This commit is contained in:
27
src/alis.rs
27
src/alis.rs
@@ -149,6 +149,17 @@ impl EventSerializer {
|
|||||||
|
|
||||||
msg
|
msg
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Eot(id, time) => {
|
||||||
|
let id_bytes = leb128::encode(id);
|
||||||
|
let time_bytes = leb128::encode(self.rel_time(time));
|
||||||
|
|
||||||
|
let mut msg = vec![0x04];
|
||||||
|
msg.extend_from_slice(&id_bytes);
|
||||||
|
msg.extend_from_slice(&time_bytes);
|
||||||
|
|
||||||
|
msg
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -403,6 +414,22 @@ mod tests {
|
|||||||
assert_eq!(serializer.0.as_micros(), 5300);
|
assert_eq!(serializer.0.as_micros(), 5300);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_serialize_eot() {
|
||||||
|
let mut serializer = EventSerializer(Duration::from_micros(5000));
|
||||||
|
let event = Event::Eot(30.into(), Duration::from_micros(5300));
|
||||||
|
let bytes = serializer.serialize_event(event);
|
||||||
|
|
||||||
|
let expected = vec![
|
||||||
|
0x04, // EOT event type
|
||||||
|
0x1E, // id (30) in LEB128
|
||||||
|
0xAC, 0x02, // relative time (300) in LEB128
|
||||||
|
];
|
||||||
|
|
||||||
|
assert_eq!(bytes, expected);
|
||||||
|
assert_eq!(serializer.0.as_micros(), 5300);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_subsequent_event_lower_time() {
|
fn test_subsequent_event_lower_time() {
|
||||||
let mut serializer = EventSerializer(Duration::from_micros(1000));
|
let mut serializer = EventSerializer(Duration::from_micros(1000));
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ pub enum Event {
|
|||||||
Resize(EventId, Duration, TtySize),
|
Resize(EventId, Duration, TtySize),
|
||||||
Marker(EventId, Duration, String),
|
Marker(EventId, Duration, String),
|
||||||
Exit(EventId, Duration, i32),
|
Exit(EventId, Duration, i32),
|
||||||
|
Eot(EventId, Duration),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
@@ -122,7 +123,12 @@ async fn run(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
None => break,
|
None => {
|
||||||
|
let time = stream_time + last_event_time.elapsed();
|
||||||
|
let id = last_event_id.next();
|
||||||
|
let _ = broadcast_tx.send(Event::Eot(id, time));
|
||||||
|
break;
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user