pyth_lazer_protocol/
lib.rs

1//! Protocol types.
2
3pub mod api;
4pub mod binary_update;
5pub mod jrpc;
6pub mod message;
7pub mod payload;
8pub mod publisher;
9pub mod router;
10mod serde_price_as_i64;
11mod serde_str;
12pub mod subscription;
13pub mod symbol_state;
14
15#[test]
16fn magics_in_big_endian() {
17    use crate::{
18        binary_update::BINARY_UPDATE_FORMAT_MAGIC,
19        message::format_magics_le::{
20            EVM_FORMAT_MAGIC, JSON_FORMAT_MAGIC, LE_ECDSA_FORMAT_MAGIC, LE_UNSIGNED_FORMAT_MAGIC,
21            SOLANA_FORMAT_MAGIC,
22        },
23        payload::PAYLOAD_FORMAT_MAGIC,
24    };
25
26    // The values listed in this test can be used when reading the magic headers in BE format
27    // (e.g., on EVM).
28
29    assert_eq!(u32::swap_bytes(BINARY_UPDATE_FORMAT_MAGIC), 1937213467);
30    assert_eq!(u32::swap_bytes(PAYLOAD_FORMAT_MAGIC), 1976813459);
31
32    assert_eq!(u32::swap_bytes(SOLANA_FORMAT_MAGIC), 3103857282);
33    assert_eq!(u32::swap_bytes(JSON_FORMAT_MAGIC), 2584795844);
34    assert_eq!(u32::swap_bytes(EVM_FORMAT_MAGIC), 706910618);
35    assert_eq!(u32::swap_bytes(LE_ECDSA_FORMAT_MAGIC), 3837609805);
36    assert_eq!(u32::swap_bytes(LE_UNSIGNED_FORMAT_MAGIC), 206398297);
37
38    for magic in [
39        BINARY_UPDATE_FORMAT_MAGIC,
40        PAYLOAD_FORMAT_MAGIC,
41        SOLANA_FORMAT_MAGIC,
42        JSON_FORMAT_MAGIC,
43        EVM_FORMAT_MAGIC,
44        LE_ECDSA_FORMAT_MAGIC,
45        LE_UNSIGNED_FORMAT_MAGIC,
46    ] {
47        // Required to distinguish between byte orders.
48        assert_ne!(u32::swap_bytes(magic), magic);
49    }
50}