Implement native PacketDump capture (#87)
Some checks failed
Native Rust workspace compile / compile (push) Has been cancelled

This commit is contained in:
2026-08-11 08:06:25 +00:00
parent f0fd975d0f
commit f0420f6c8b
8 changed files with 1298 additions and 13 deletions

View File

@@ -183,6 +183,42 @@ fn packet_callbacks_preserve_filtering_order_async_policy_and_reentrancy() {
);
}
#[test]
fn decoded_packet_callbacks_preserve_optional_raw_datagrams() {
let client = GridClient::new().expect("client");
let sim = simulator(&client);
let events = PacketEventDictionary::new(client).expect("packet events");
let observed = Arc::new(Mutex::new(None));
let captured = Arc::clone(&observed);
events
.register_event(
PacketType::Default,
Arc::new(move |event| *captured.lock().unwrap() = event.raw_data()),
false,
)
.unwrap();
let raw = vec![0x40, 0, 0, 0, 0, 0, 1, 7, 0, 0, 0, 0];
events
.invoke_raise_event_with_raw_data(
PacketType::StartPingCheck,
base_packet(PacketType::StartPingCheck),
sim.clone(),
raw.clone(),
)
.unwrap();
assert_eq!(*observed.lock().unwrap(), Some(raw));
*observed.lock().unwrap() = Some(vec![1]);
events
.invoke_raise_event(
PacketType::StartPingCheck,
base_packet(PacketType::StartPingCheck),
sim,
)
.unwrap();
assert_eq!(*observed.lock().unwrap(), None);
}
#[test]
fn synchronous_specific_dispatch_suppresses_default_async_chain_like_reference() {
let mixed_events = PacketEventDictionary::new(GridClient::new().unwrap()).unwrap();