1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
use super::Rpc;
use crate::types::{BlockHeader, FilterSubscription, Log, SyncInfoSubscription, H256, U128};
use std::marker::PhantomData;
pub struct SubscriptionRequest<T> {
pub(crate) rpc: Rpc<U128>,
result_type: PhantomData<T>,
}
pub fn eth_subscribe_new_heads() -> SubscriptionRequest<BlockHeader> {
let mut rpc = Rpc::new("eth_subscribe");
rpc.add_param("newHeads");
SubscriptionRequest {
rpc,
result_type: PhantomData,
}
}
pub fn eth_subscribe_new_pending_transactions() -> SubscriptionRequest<H256> {
let mut rpc = Rpc::new("eth_subscribe");
rpc.add_param("newPendingTransactions");
SubscriptionRequest {
rpc,
result_type: PhantomData,
}
}
pub fn eth_subscribe_syncing() -> SubscriptionRequest<SyncInfoSubscription> {
let mut rpc = Rpc::new("eth_subscribe");
rpc.add_param("syncing");
SubscriptionRequest {
rpc,
result_type: PhantomData,
}
}
pub fn eth_subscribe_logs(filter: FilterSubscription) -> SubscriptionRequest<Log> {
let mut rpc = Rpc::new("eth_subscribe");
rpc.add_param("logs");
rpc.add_param(filter);
SubscriptionRequest {
rpc,
result_type: PhantomData,
}
}
pub(crate) fn eth_unsubscribe(sub_id: U128) -> Rpc<bool> {
let mut rpc = Rpc::new("eth_unsubscribe");
rpc.add_param(sub_id);
rpc
}