3
3
proof:: wormhole_merkle:: WormholeMerkleState ,
4
4
types:: {
5
5
AccumulatorMessages ,
6
- MessageExt ,
7
- MessageIdentifier ,
8
- MessageType ,
9
6
ProofSet ,
10
- RawMessage ,
11
7
RequestTime ,
12
8
Slot ,
13
9
UnixTimestamp ,
18
14
Result ,
19
15
} ,
20
16
async_trait:: async_trait,
21
- pyth_oracle:: Message ,
17
+ pyth_oracle:: {
18
+ Message ,
19
+ MessageType ,
20
+ } ,
22
21
pyth_sdk:: PriceIdentifier ,
23
22
} ;
24
23
@@ -56,6 +55,12 @@ impl TryFrom<AccumulatorState> for CompletedAccumulatorState {
56
55
}
57
56
}
58
57
58
+ #[ derive( Clone , PartialEq , Eq , Debug , Hash ) ]
59
+ pub struct MessageStateKey {
60
+ pub id : [ u8 ; 32 ] ,
61
+ pub type_ : MessageType ,
62
+ }
63
+
59
64
#[ derive( Clone , PartialEq , Eq , Debug , PartialOrd , Ord ) ]
60
65
pub struct MessageStateTime {
61
66
pub publish_time : UnixTimestamp ,
@@ -64,40 +69,36 @@ pub struct MessageStateTime {
64
69
65
70
#[ derive( Clone , PartialEq , Debug ) ]
66
71
pub struct MessageState {
67
- pub publish_time : UnixTimestamp ,
68
- pub slot : Slot ,
69
- pub id : MessageIdentifier ,
70
- pub message : Message ,
71
- pub raw_message : RawMessage ,
72
- pub proof_set : ProofSet ,
73
- pub received_at : UnixTimestamp ,
72
+ pub slot : Slot ,
73
+ pub message : Message ,
74
+ pub proof_set : ProofSet ,
75
+ pub received_at : UnixTimestamp ,
74
76
}
75
77
76
78
impl MessageState {
77
79
pub fn time ( & self ) -> MessageStateTime {
78
80
MessageStateTime {
79
- publish_time : self . publish_time ,
81
+ publish_time : self . message . publish_time ( ) ,
80
82
slot : self . slot ,
81
83
}
82
84
}
83
85
84
- pub fn key ( & self ) -> MessageIdentifier {
85
- self . id . clone ( )
86
+ pub fn key ( & self ) -> MessageStateKey {
87
+ MessageStateKey {
88
+ id : self . message . id ( ) ,
89
+ type_ : self . message . into ( ) ,
90
+ }
86
91
}
87
92
88
93
pub fn new (
89
94
message : Message ,
90
- raw_message : RawMessage ,
91
95
proof_set : ProofSet ,
92
96
slot : Slot ,
93
97
received_at : UnixTimestamp ,
94
98
) -> Self {
95
99
Self {
96
- publish_time : message. publish_time ( ) ,
97
100
slot,
98
- id : message. id ( ) ,
99
101
message,
100
- raw_message,
101
102
proof_set,
102
103
received_at,
103
104
}
@@ -119,7 +120,7 @@ pub enum MessageStateFilter {
119
120
/// key for the update data they wish to access.
120
121
#[ async_trait]
121
122
pub trait Storage : Send + Sync {
122
- async fn message_state_keys ( & self ) -> Vec < MessageIdentifier > ;
123
+ async fn message_state_keys ( & self ) -> Vec < MessageStateKey > ;
123
124
async fn store_message_states ( & self , message_states : Vec < MessageState > ) -> Result < ( ) > ;
124
125
async fn fetch_message_states (
125
126
& self ,
0 commit comments