tradingview/live/handler/
message.rs1use bon::Builder;
2use iso_currency::Currency;
3use serde::{Deserialize, Serialize};
4use ustr::Ustr;
5
6use crate::{
7 Interval, MarketAdjustment, SessionType, Timezone, options::Range, study::StudyConfiguration,
8};
9
10#[derive(Debug, Clone, Serialize, Deserialize, Copy)]
11pub enum CommandCondition {
12 SessionExists(Ustr),
13 SymbolResolved(Ustr),
14 ConnectionHealthy,
15 QueueEmpty,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize, Copy, Builder)]
19#[builder(on(Ustr, into))]
20pub struct CommandMsg {
21 pub inner: Ustr,
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize, Builder)]
25#[builder(on(Ustr, into))]
26pub struct QuoteCommandMsg {
27 pub quote_session: Ustr,
28 pub symbols: Vec<Ustr>,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize, Copy, Builder)]
32#[builder(on(Ustr, into))]
33pub struct AddReplaySeriesCommandMsg {
34 pub replay_session: Ustr,
35 pub request_id: Ustr,
36 pub instrument: Ustr, pub adjustment: Option<MarketAdjustment>,
38 pub session_type: Option<SessionType>,
39 pub currency: Option<Currency>,
40 pub interval: Interval,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize, Copy, Builder)]
44#[builder(on(Ustr, into))]
45pub struct ReplayStepCommandMsg {
46 pub replay_session: Ustr,
47 pub request_id: Ustr,
48 pub step: i64,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize, Copy, Builder)]
52#[builder(on(Ustr, into))]
53pub struct ReplayStartCommandMsg {
54 pub replay_session: Ustr,
55 pub request_id: Ustr,
56 pub interval: u64, }
58
59#[derive(Debug, Clone, Serialize, Deserialize, Copy, Builder)]
60#[builder(on(Ustr, into))]
61pub struct ReplayStopCommandMsg {
62 pub replay_session: Ustr,
63 pub request_id: Ustr,
64}
65
66#[derive(Debug, Clone, Serialize, Deserialize, Copy, Builder)]
67#[builder(on(Ustr, into))]
68pub struct SessionTerminationCommandMsg {
69 pub chart_session: Ustr,
70 pub id: Ustr,
71}
72
73#[derive(Debug, Clone, Serialize, Deserialize, Copy, Builder)]
74#[builder(on(Ustr, into))]
75pub struct ReplayResetCommandMsg {
76 pub replay_session: Ustr,
77 pub request_id: Ustr,
78 pub timestamp: i64, }
80#[derive(Debug, Clone, Serialize, Deserialize, Builder)]
81#[builder(on(Ustr, into))]
82pub struct StudyCommandMsg {
83 pub chart_session: Ustr,
84 pub study_ids: [Ustr; 2],
85 pub chart_series_id: Ustr,
86 pub study: StudyConfiguration,
87}
88
89#[derive(Debug, Clone, Serialize, Deserialize, Copy, Builder)]
90#[builder(on(Ustr, into))]
91pub struct ChartSeriesCommandMsg {
92 pub chart_session: Ustr,
93 pub series_identifier: Ustr, pub series_id: Ustr, pub symbol_series_id: Ustr, pub interval: Interval,
97 pub bar_count: u64,
98 pub range: Option<Range>,
99}
100
101#[derive(Debug, Clone, Serialize, Deserialize, Copy, Builder)]
102#[builder(on(Ustr, into))]
103pub struct ResolveSymbolCommandMsg {
104 pub session: Ustr,
105 pub symbol_series_id: Ustr,
106 pub instrument: Ustr, pub adjustment: Option<MarketAdjustment>,
108 pub currency: Option<Currency>,
109 pub session_type: Option<SessionType>,
110 pub replay_session: Option<Ustr>,
111}
112
113#[derive(Debug, Clone, Serialize, Deserialize, Copy, Builder)]
114#[builder(on(Ustr, into))]
115pub struct ChartDataRequestMsg {
116 pub chart_session: Ustr,
117 pub series_id: Ustr,
118 pub num: u64,
119}
120
121#[derive(Debug, Clone, Serialize, Deserialize, Copy, Builder)]
122#[builder(on(Ustr, into))]
123pub struct SetTimeZoneCommandMsg {
124 pub chart_session: Ustr,
125 pub timezone: Timezone, }
127
128#[derive(Debug, Clone, Serialize, Deserialize, Copy, Builder)]
129#[builder(on(Ustr, into))]
130pub struct SetLocaleCommandMsg {
131 pub language: Ustr, pub country: Ustr, }