Fix status message deserialization
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
186
Cargo.lock
generated
186
Cargo.lock
generated
@@ -90,7 +90,7 @@ checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
"syn 2.0.49",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -227,9 +227,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "bumpalo"
|
||||
version = "3.14.0"
|
||||
version = "3.15.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
|
||||
checksum = "d32a994c2b3ca201d9b263612a374263f05e7adde37c4707f693dcd375076d1f"
|
||||
|
||||
[[package]]
|
||||
name = "byteorder"
|
||||
@@ -311,6 +311,7 @@ dependencies = [
|
||||
"android-tzdata",
|
||||
"iana-time-zone",
|
||||
"num-traits",
|
||||
"serde",
|
||||
"windows-targets 0.52.0",
|
||||
]
|
||||
|
||||
@@ -485,6 +486,41 @@ dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "darling"
|
||||
version = "0.20.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c376d08ea6aa96aafe61237c7200d1241cb177b7d3a542d791f2d118e9cbb955"
|
||||
dependencies = [
|
||||
"darling_core",
|
||||
"darling_macro",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "darling_core"
|
||||
version = "0.20.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "33043dcd19068b8192064c704b3f83eb464f91f1ff527b44a4e2b08d9cdb8855"
|
||||
dependencies = [
|
||||
"fnv",
|
||||
"ident_case",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"strsim",
|
||||
"syn 2.0.49",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "darling_macro"
|
||||
version = "0.20.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c5a91391accf613803c2a9bf9abccdbaa07c54b4244a5b64883f9c3c137c86be"
|
||||
dependencies = [
|
||||
"darling_core",
|
||||
"quote",
|
||||
"syn 2.0.49",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dashmap"
|
||||
version = "5.5.3"
|
||||
@@ -492,7 +528,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"hashbrown",
|
||||
"hashbrown 0.14.3",
|
||||
"lock_api",
|
||||
"once_cell",
|
||||
"parking_lot_core",
|
||||
@@ -730,7 +766,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
"syn 2.0.49",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -804,9 +840,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
||||
|
||||
[[package]]
|
||||
name = "governor"
|
||||
version = "0.6.0"
|
||||
version = "0.6.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "821239e5672ff23e2a7060901fa622950bbd80b649cdaadd78d1c1767ed14eb4"
|
||||
checksum = "68a7f542ee6b35af73b06abc0dad1c1bae89964e4e253bc4b587b91c9637867b"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"dashmap",
|
||||
@@ -815,9 +851,11 @@ dependencies = [
|
||||
"no-std-compat",
|
||||
"nonzero_ext",
|
||||
"parking_lot",
|
||||
"portable-atomic",
|
||||
"quanta",
|
||||
"rand",
|
||||
"smallvec",
|
||||
"spinning_top",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -832,7 +870,7 @@ dependencies = [
|
||||
"futures-sink",
|
||||
"futures-util",
|
||||
"http 0.2.11",
|
||||
"indexmap",
|
||||
"indexmap 2.2.3",
|
||||
"slab",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
@@ -851,7 +889,7 @@ dependencies = [
|
||||
"futures-sink",
|
||||
"futures-util",
|
||||
"http 1.0.0",
|
||||
"indexmap",
|
||||
"indexmap 2.2.3",
|
||||
"slab",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
@@ -868,6 +906,12 @@ dependencies = [
|
||||
"crunchy",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.12.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.14.3"
|
||||
@@ -893,6 +937,12 @@ version = "0.3.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd"
|
||||
|
||||
[[package]]
|
||||
name = "hex"
|
||||
version = "0.4.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
|
||||
|
||||
[[package]]
|
||||
name = "hmac"
|
||||
version = "0.12.1"
|
||||
@@ -1080,6 +1130,12 @@ dependencies = [
|
||||
"cc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ident_case"
|
||||
version = "1.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
||||
|
||||
[[package]]
|
||||
name = "idna"
|
||||
version = "0.5.0"
|
||||
@@ -1090,6 +1146,17 @@ dependencies = [
|
||||
"unicode-normalization",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "1.9.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"hashbrown 0.12.3",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "2.2.3"
|
||||
@@ -1097,7 +1164,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177"
|
||||
dependencies = [
|
||||
"equivalent",
|
||||
"hashbrown",
|
||||
"hashbrown 0.14.3",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1280,15 +1348,6 @@ dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "mach2"
|
||||
version = "0.4.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "matchit"
|
||||
version = "0.7.3"
|
||||
@@ -1467,7 +1526,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
"syn 2.0.49",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1581,7 +1640,7 @@ checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
"syn 2.0.49",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1602,6 +1661,12 @@ version = "0.3.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
|
||||
|
||||
[[package]]
|
||||
name = "portable-atomic"
|
||||
version = "1.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
|
||||
|
||||
[[package]]
|
||||
name = "powerfmt"
|
||||
version = "0.2.0"
|
||||
@@ -1653,6 +1718,7 @@ dependencies = [
|
||||
"serde-aux",
|
||||
"serde_json",
|
||||
"serde_repr",
|
||||
"serde_with",
|
||||
"time",
|
||||
"tokio",
|
||||
"tokio-tungstenite",
|
||||
@@ -1661,13 +1727,12 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "quanta"
|
||||
version = "0.11.1"
|
||||
version = "0.12.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a17e662a7a8291a865152364c20c7abc5e60486ab2001e8ec10b24862de0b9ab"
|
||||
checksum = "9ca0b7bac0b97248c40bb77288fc52029cf1459c0461ea1b05ee32ccf011de2c"
|
||||
dependencies = [
|
||||
"crossbeam-utils",
|
||||
"libc",
|
||||
"mach2",
|
||||
"once_cell",
|
||||
"raw-cpuid",
|
||||
"wasi",
|
||||
@@ -1716,11 +1781,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "raw-cpuid"
|
||||
version = "10.7.0"
|
||||
version = "11.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332"
|
||||
checksum = "9d86a7c4638d42c44551f4791a20e687dbb4c3de1f33c43dd71e355cd429def1"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"bitflags 2.4.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1865,7 +1930,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "19599f60a688b5160247ee9c37a6af8b0c742ee8b160c5b44acc0f0eb265a59f"
|
||||
dependencies = [
|
||||
"csv",
|
||||
"hashbrown",
|
||||
"hashbrown 0.14.3",
|
||||
"itertools 0.11.0",
|
||||
"lazy_static",
|
||||
"protobuf",
|
||||
@@ -2016,7 +2081,7 @@ checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
"syn 2.0.49",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2059,7 +2124,7 @@ checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
"syn 2.0.49",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2074,13 +2139,43 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_with"
|
||||
version = "3.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "15d167997bd841ec232f5b2b8e0e26606df2e7caa4c31b95ea9ca52b200bd270"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"chrono",
|
||||
"hex",
|
||||
"indexmap 1.9.3",
|
||||
"indexmap 2.2.3",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
"serde_with_macros",
|
||||
"time",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_with_macros"
|
||||
version = "3.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "865f9743393e638991566a8b7a479043c2c8da94a33e0a31f18214c9cae0a64d"
|
||||
dependencies = [
|
||||
"darling",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.49",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_yaml"
|
||||
version = "0.9.31"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "adf8a49373e98a4c5f0ceb5d05aa7c648d75f63774981ed95b7c7443bbd50c6e"
|
||||
dependencies = [
|
||||
"indexmap",
|
||||
"indexmap 2.2.3",
|
||||
"itoa",
|
||||
"ryu",
|
||||
"serde",
|
||||
@@ -2145,12 +2240,27 @@ dependencies = [
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "spinning_top"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d96d2d1d716fb500937168cc09353ffdc7a012be8475ac7308e1bdf0e3923300"
|
||||
dependencies = [
|
||||
"lock_api",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "static_assertions"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
||||
|
||||
[[package]]
|
||||
name = "strsim"
|
||||
version = "0.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
|
||||
|
||||
[[package]]
|
||||
name = "subtle"
|
||||
version = "2.5.0"
|
||||
@@ -2170,9 +2280,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.48"
|
||||
version = "2.0.49"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f"
|
||||
checksum = "915aea9e586f80826ee59f8453c1101f9d1c4b3964cd2460185ee8e299ada496"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -2263,7 +2373,7 @@ checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
"syn 2.0.49",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2347,7 +2457,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
"syn 2.0.49",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2621,7 +2731,7 @@ dependencies = [
|
||||
"once_cell",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
"syn 2.0.49",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
@@ -2655,7 +2765,7 @@ checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
"syn 2.0.49",
|
||||
"wasm-bindgen-backend",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
@@ -2877,7 +2987,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
"syn 2.0.49",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@@ -27,6 +27,7 @@ log4rs = "1.2.0"
|
||||
serde = "1.0.188"
|
||||
serde_json = "1.0.105"
|
||||
serde_repr = "0.1.18"
|
||||
serde_with = "3.6.1"
|
||||
serde-aux = "4.4.0"
|
||||
futures-util = "0.3.28"
|
||||
reqwest = { version = "0.11.20", features = [
|
||||
|
@@ -269,13 +269,13 @@ impl Handler for BarsHandler {
|
||||
}
|
||||
websocket::data::incoming::Message::Status(message) => {
|
||||
debug!(
|
||||
"Received status message for {}: {}.",
|
||||
message.symbol, message.status_message
|
||||
"Received status message for {}: {:?}.",
|
||||
message.symbol, message.status
|
||||
);
|
||||
|
||||
match message.status {
|
||||
websocket::data::incoming::status::Status::TradingHalt
|
||||
| websocket::data::incoming::status::Status::VolatilityTradingPause => {
|
||||
websocket::data::incoming::status::Status::TradingHalt(_)
|
||||
| websocket::data::incoming::status::Status::VolatilityTradingPause(_) => {
|
||||
database::assets::update_status_where_symbol(
|
||||
&self.config.clickhouse_client,
|
||||
&message.symbol,
|
||||
@@ -284,8 +284,8 @@ impl Handler for BarsHandler {
|
||||
.await
|
||||
.unwrap();
|
||||
}
|
||||
websocket::data::incoming::status::Status::Resume
|
||||
| websocket::data::incoming::status::Status::TradingResumption => {
|
||||
websocket::data::incoming::status::Status::Resume(_)
|
||||
| websocket::data::incoming::status::Status::TradingResumption(_) => {
|
||||
database::assets::update_status_where_symbol(
|
||||
&self.config.clickhouse_client,
|
||||
&message.symbol,
|
||||
|
@@ -1,128 +1,130 @@
|
||||
use serde::Deserialize;
|
||||
use serde_with::serde_as;
|
||||
use time::OffsetDateTime;
|
||||
|
||||
#[derive(Deserialize, Debug, PartialEq, Eq)]
|
||||
#[serde(tag = "sc", content = "sm")]
|
||||
pub enum Status {
|
||||
#[serde(rename = "2")]
|
||||
#[serde(alias = "H")]
|
||||
TradingHalt,
|
||||
TradingHalt(String),
|
||||
#[serde(rename = "3")]
|
||||
Resume,
|
||||
Resume(String),
|
||||
#[serde(rename = "5")]
|
||||
PriceIndication,
|
||||
PriceIndication(String),
|
||||
#[serde(rename = "6")]
|
||||
TradingRangeIndication,
|
||||
TradingRangeIndication(String),
|
||||
#[serde(rename = "7")]
|
||||
MarketImbalanceBuy,
|
||||
MarketImbalanceBuy(String),
|
||||
#[serde(rename = "8")]
|
||||
MarketImbalanceSell,
|
||||
MarketImbalanceSell(String),
|
||||
#[serde(rename = "9")]
|
||||
MarketOnCloseImbalanceBuy,
|
||||
MarketOnCloseImbalanceBuy(String),
|
||||
#[serde(rename = "A")]
|
||||
MarketOnCloseImbalanceSell,
|
||||
MarketOnCloseImbalanceSell(String),
|
||||
#[serde(rename = "C")]
|
||||
NoMarketImbalance,
|
||||
NoMarketImbalance(String),
|
||||
#[serde(rename = "D")]
|
||||
NoMarketOnCloseImbalance,
|
||||
NoMarketOnCloseImbalance(String),
|
||||
#[serde(rename = "E")]
|
||||
ShortSaleRestriction,
|
||||
ShortSaleRestriction(String),
|
||||
#[serde(rename = "F")]
|
||||
LimitUpLimitDown,
|
||||
LimitUpLimitDown(String),
|
||||
#[serde(rename = "Q")]
|
||||
QuotationResumption,
|
||||
QuotationResumption(String),
|
||||
#[serde(rename = "T")]
|
||||
TradingResumption,
|
||||
TradingResumption(String),
|
||||
#[serde(rename = "P")]
|
||||
VolatilityTradingPause,
|
||||
VolatilityTradingPause(String),
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Debug, PartialEq, Eq)]
|
||||
#[serde(tag = "rc", content = "rm")]
|
||||
pub enum Reason {
|
||||
#[serde(rename = "D")]
|
||||
NewsReleased,
|
||||
NewsReleased(String),
|
||||
#[serde(rename = "I")]
|
||||
OrderImbalance,
|
||||
OrderImbalance(String),
|
||||
#[serde(rename = "M")]
|
||||
LimitUpLimitDown,
|
||||
LimitUpLimitDown(String),
|
||||
#[serde(rename = "P")]
|
||||
NewsPending,
|
||||
NewsPending(String),
|
||||
#[serde(rename = "X")]
|
||||
Operational,
|
||||
Operational(String),
|
||||
#[serde(rename = "Y")]
|
||||
SubPennyTrading,
|
||||
SubPennyTrading(String),
|
||||
#[serde(rename = "1")]
|
||||
MarketWideCircuitBreakerL1Breached,
|
||||
MarketWideCircuitBreakerL1Breached(String),
|
||||
#[serde(rename = "2")]
|
||||
MarketWideCircuitBreakerL2Breached,
|
||||
MarketWideCircuitBreakerL2Breached(String),
|
||||
#[serde(rename = "3")]
|
||||
MarketWideCircuitBreakerL3Breached,
|
||||
MarketWideCircuitBreakerL3Breached(String),
|
||||
#[serde(rename = "T1")]
|
||||
HaltNewsPending,
|
||||
HaltNewsPending(String),
|
||||
#[serde(rename = "T2")]
|
||||
HaltNewsDissemination,
|
||||
HaltNewsDissemination(String),
|
||||
#[serde(rename = "T5")]
|
||||
SingleStockTradingPauseInAffect,
|
||||
SingleStockTradingPauseInAffect(String),
|
||||
#[serde(rename = "T6")]
|
||||
RegulatoryHaltExtraordinaryMarketActivity,
|
||||
RegulatoryHaltExtraordinaryMarketActivity(String),
|
||||
#[serde(rename = "T8")]
|
||||
HaltETF,
|
||||
HaltETF(String),
|
||||
#[serde(rename = "T12")]
|
||||
TradingHaltedForInformationRequestedByNASDAQ,
|
||||
TradingHaltedForInformationRequestedByNASDAQ(String),
|
||||
#[serde(rename = "H4")]
|
||||
HaltNonCompliance,
|
||||
HaltNonCompliance(String),
|
||||
#[serde(rename = "H9")]
|
||||
HaltFilingsNotCurrent,
|
||||
HaltFilingsNotCurrent(String),
|
||||
#[serde(rename = "H10")]
|
||||
HaltSECTradingSuspension,
|
||||
HaltSECTradingSuspension(String),
|
||||
#[serde(rename = "H11")]
|
||||
HaltRegulatoryConcern,
|
||||
HaltRegulatoryConcern(String),
|
||||
#[serde(rename = "01")]
|
||||
OperationsHaltContactMarketOperations,
|
||||
OperationsHaltContactMarketOperations(String),
|
||||
#[serde(rename = "IPO1")]
|
||||
IPOIssueNotYetTrading,
|
||||
IPOIssueNotYetTrading(String),
|
||||
#[serde(rename = "M1")]
|
||||
CorporateAction,
|
||||
CorporateAction(String),
|
||||
#[serde(rename = "M2")]
|
||||
QuotationNotAvailable,
|
||||
QuotationNotAvailable(String),
|
||||
#[serde(rename = "LUDP")]
|
||||
VolatilityTradingPause,
|
||||
VolatilityTradingPause(String),
|
||||
#[serde(rename = "LUDS")]
|
||||
VolatilityTradingPauseStraddleCondition,
|
||||
VolatilityTradingPauseStraddleCondition(String),
|
||||
#[serde(rename = "MWC1")]
|
||||
MarketWideCircuitBreakerHaltL1,
|
||||
MarketWideCircuitBreakerHaltL1(String),
|
||||
#[serde(rename = "MWC2")]
|
||||
MarketWideCircuitBreakerHaltL2,
|
||||
MarketWideCircuitBreakerHaltL2(String),
|
||||
#[serde(rename = "MWC3")]
|
||||
MarketWideCircuitBreakerHaltL3,
|
||||
MarketWideCircuitBreakerHaltL3(String),
|
||||
#[serde(rename = "MWC0")]
|
||||
MarketWideCircuitBreakerHaltCarryOverFromPreviousDay,
|
||||
MarketWideCircuitBreakerHaltCarryOverFromPreviousDay(String),
|
||||
#[serde(rename = "T3")]
|
||||
NewsAndResumptionTimes,
|
||||
NewsAndResumptionTimes(String),
|
||||
#[serde(rename = "T7")]
|
||||
SingleStockTradingPauseQuotationOnlyPeriod,
|
||||
SingleStockTradingPauseQuotationOnlyPeriod(String),
|
||||
#[serde(rename = "R4")]
|
||||
QualificationsIssuesReviewedResolvedQuotationsTradingToResume,
|
||||
QualificationsIssuesReviewedResolvedQuotationsTradingToResume(String),
|
||||
#[serde(rename = "R9")]
|
||||
FilingRequirementsSatisfiedResolvedQuotationsTradingToResume,
|
||||
FilingRequirementsSatisfiedResolvedQuotationsTradingToResume(String),
|
||||
#[serde(rename = "C3")]
|
||||
IssuerNewsNotForthcomingQuotationsTradingToResume,
|
||||
IssuerNewsNotForthcomingQuotationsTradingToResume(String),
|
||||
#[serde(rename = "C4")]
|
||||
QualificationsHaltEndedMaintReqMetResume,
|
||||
QualificationsHaltEndedMaintReqMetResume(String),
|
||||
#[serde(rename = "C9")]
|
||||
QualificationsHaltConcludedFilingsMetQuotesTradesToResume,
|
||||
QualificationsHaltConcludedFilingsMetQuotesTradesToResume(String),
|
||||
#[serde(rename = "C11")]
|
||||
TradeHaltConcludedByOtherRegulatoryAuthQuotesTradesResume,
|
||||
TradeHaltConcludedByOtherRegulatoryAuthQuotesTradesResume(String),
|
||||
#[serde(rename = "R1")]
|
||||
NewIssueAvailable,
|
||||
NewIssueAvailable(String),
|
||||
#[serde(rename = "R")]
|
||||
IssueAvailable,
|
||||
IssueAvailable(String),
|
||||
#[serde(rename = "IPOQ")]
|
||||
IPOSecurityReleasedForQuotation,
|
||||
IPOSecurityReleasedForQuotation(String),
|
||||
#[serde(rename = "IPOE")]
|
||||
IPOSecurityPositioningWindowExtension,
|
||||
IPOSecurityPositioningWindowExtension(String),
|
||||
#[serde(rename = "MWCQ")]
|
||||
MarketWideCircuitBreakerResumption,
|
||||
MarketWideCircuitBreakerResumption(String),
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Debug, PartialEq, Eq)]
|
||||
@@ -135,20 +137,18 @@ pub enum Tape {
|
||||
|
||||
#[derive(Deserialize, Debug, PartialEq, Eq)]
|
||||
#[allow(clippy::struct_field_names)]
|
||||
#[serde_as]
|
||||
pub struct Message {
|
||||
#[serde(rename = "t")]
|
||||
#[serde(with = "time::serde::rfc3339")]
|
||||
pub time: OffsetDateTime,
|
||||
#[serde(rename = "S")]
|
||||
pub symbol: String,
|
||||
#[serde(rename = "sc")]
|
||||
#[serde(flatten)]
|
||||
pub status: Status,
|
||||
#[serde(rename = "sm")]
|
||||
pub status_message: String,
|
||||
#[serde(rename = "rc")]
|
||||
pub reason: Reason,
|
||||
#[serde(rename = "rm")]
|
||||
pub reason_message: String,
|
||||
#[serde(flatten)]
|
||||
#[serde_as(as = "NoneAsEmptyString")]
|
||||
pub reason: Option<Reason>,
|
||||
#[serde(rename = "z")]
|
||||
pub tape: Tape,
|
||||
}
|
||||
|
Reference in New Issue
Block a user