Add server gameplay transport policy
This commit is contained in:
@@ -0,0 +1,28 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
|
class Delivery(str, Enum):
|
||||||
|
UNRELIABLE_SEQUENCED = "unreliable_sequenced"
|
||||||
|
RELIABLE_ORDERED = "reliable_ordered"
|
||||||
|
|
||||||
|
|
||||||
|
_SNAPSHOT_PACKET_TYPES = frozenset({"transform", "npcState"})
|
||||||
|
|
||||||
|
|
||||||
|
def delivery_for_packet_type(packet_type: str) -> Delivery:
|
||||||
|
"""Return the transport contract for one validated protocol packet type.
|
||||||
|
|
||||||
|
Unknown packet types intentionally default to reliable/ordered. Protocol
|
||||||
|
validation still decides whether an unknown packet is accepted; this
|
||||||
|
function only prevents a future transport adapter from accidentally
|
||||||
|
downgrading control traffic to an unreliable channel.
|
||||||
|
"""
|
||||||
|
if packet_type in _SNAPSHOT_PACKET_TYPES:
|
||||||
|
return Delivery.UNRELIABLE_SEQUENCED
|
||||||
|
return Delivery.RELIABLE_ORDERED
|
||||||
|
|
||||||
|
|
||||||
|
def is_snapshot_packet(packet_type: str) -> bool:
|
||||||
|
return delivery_for_packet_type(packet_type) is Delivery.UNRELIABLE_SEQUENCED
|
||||||
Reference in New Issue
Block a user