pyth_lazer_protocol/
lib.rs

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