Skip to main content

steel_registry/
steel_ticket_types.rs

1//! Steel-owned ticket types used by server internals.
2
3use steel_utils::Identifier;
4
5use crate::ticket_type::{TicketType, TicketTypeFlags, TicketTypeRegistry};
6
7/// Keeps a requested chunk loading for the lifetime of its request lease.
8pub static CHUNK_REQUEST: TicketType = TicketType::new(
9    Identifier::new_static("steel", "chunk_request"),
10    TicketType::NO_TIMEOUT,
11    TicketTypeFlags::LOADING,
12);
13
14pub fn register_steel_ticket_types(registry: &mut TicketTypeRegistry) {
15    registry.register(&CHUNK_REQUEST);
16}
17
18#[cfg(test)]
19mod tests {
20    use super::CHUNK_REQUEST;
21    use crate::vanilla_ticket_types::UNKNOWN;
22    use crate::{Registry, RegistryExt};
23
24    #[test]
25    fn chunk_request_is_registered_after_vanilla_types() {
26        let registry = Registry::new_vanilla();
27
28        assert_eq!(registry.ticket_types.len(), 10);
29        assert_eq!(registry.ticket_types.by_id(8), Some(&UNKNOWN));
30        assert_eq!(registry.ticket_types.by_id(9), Some(&CHUNK_REQUEST));
31        assert!(CHUNK_REQUEST.does_load());
32        assert!(!CHUNK_REQUEST.has_timeout());
33    }
34}