pyth_lazer_protocol/
lib.rs

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