diff --git a/Cargo.toml b/Cargo.toml index e92e704d..8d54d33d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ibapi" -version = "1.0.9" +version = "1.0.10" edition = "2021" authors = ["Wil Boayue "] description = "A Rust implementation of the Interactive Brokers TWS API, providing a reliable and user friendly interface for TWS and IB Gateway. Designed with a focus on simplicity and performance." diff --git a/src/market_data/realtime.rs b/src/market_data/realtime.rs index 93963f47..d80c7748 100644 --- a/src/market_data/realtime.rs +++ b/src/market_data/realtime.rs @@ -5,7 +5,7 @@ use time::OffsetDateTime; use crate::client::{DataStream, ResponseContext, Subscription}; use crate::contracts::tick_types::TickType; use crate::contracts::{Contract, OptionComputation}; -use crate::messages::{IncomingMessages, Notice, OutgoingMessages, RequestMessage, ResponseMessage}; +use crate::messages::{self, IncomingMessages, Notice, OutgoingMessages, RequestMessage, ResponseMessage}; use crate::orders::TagValue; use crate::server_versions; use crate::ToField; @@ -205,6 +205,7 @@ impl ToField for WhatToShow { pub enum MarketDepths { MarketDepth(MarketDepth), MarketDepthL2(MarketDepthL2), + Notice(Notice), } #[derive(Debug, Default, Serialize, Deserialize, PartialEq)] @@ -251,7 +252,14 @@ impl DataStream for MarketDepths { client.server_version, message, )?)), - IncomingMessages::Error => Err(Error::from(message.clone())), + IncomingMessages::Error => { + let code = message.peek_int(messages::CODE_INDEX).unwrap(); + if code >= 2100 && code < 2200 { + Ok(MarketDepths::Notice(Notice::from(message))) + } else { + Err(Error::from(message.clone())) + } + } _ => Err(Error::UnexpectedResponse(message.clone())), } }