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;
14pub mod time;
15
16#[test]
17fn magics_in_big_endian() {
18    use crate::{
19        binary_update::BINARY_UPDATE_FORMAT_MAGIC,
20        message::format_magics_le::{
21            EVM_FORMAT_MAGIC, JSON_FORMAT_MAGIC, LE_ECDSA_FORMAT_MAGIC, LE_UNSIGNED_FORMAT_MAGIC,
22            SOLANA_FORMAT_MAGIC,
23        },
24        payload::PAYLOAD_FORMAT_MAGIC,
25    };
26
27    // The values listed in this test can be used when reading the magic headers in BE format
28    // (e.g., on EVM).
29
30    assert_eq!(u32::swap_bytes(BINARY_UPDATE_FORMAT_MAGIC), 1937213467);
31    assert_eq!(u32::swap_bytes(PAYLOAD_FORMAT_MAGIC), 1976813459);
32
33    assert_eq!(u32::swap_bytes(SOLANA_FORMAT_MAGIC), 3103857282);
34    assert_eq!(u32::swap_bytes(JSON_FORMAT_MAGIC), 2584795844);
35    assert_eq!(u32::swap_bytes(EVM_FORMAT_MAGIC), 706910618);
36    assert_eq!(u32::swap_bytes(LE_ECDSA_FORMAT_MAGIC), 3837609805);
37    assert_eq!(u32::swap_bytes(LE_UNSIGNED_FORMAT_MAGIC), 206398297);
38
39    for magic in [
40        BINARY_UPDATE_FORMAT_MAGIC,
41        PAYLOAD_FORMAT_MAGIC,
42        SOLANA_FORMAT_MAGIC,
43        JSON_FORMAT_MAGIC,
44        EVM_FORMAT_MAGIC,
45        LE_ECDSA_FORMAT_MAGIC,
46        LE_UNSIGNED_FORMAT_MAGIC,
47    ] {
48        // Required to distinguish between byte orders.
49        assert_ne!(u32::swap_bytes(magic), magic);
50    }
51}