Skip to content

Commit

Permalink
bump version (#176)
Browse files Browse the repository at this point in the history
Co-authored-by: Wil Boayue <[email protected]>
  • Loading branch information
wboayue and Wil Boayue authored Nov 14, 2024
1 parent 17a4a9d commit 9de0bb1
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 56 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "ibapi"
version = "1.0.0"
version = "1.0.1"
edition = "2021"
authors = ["Wil Boayue <[email protected]>"]
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."
Expand Down
85 changes: 43 additions & 42 deletions src/messages.rs
Original file line number Diff line number Diff line change
Expand Up @@ -209,49 +209,50 @@ pub fn order_id_index(kind: IncomingMessages) -> Option<usize> {

pub fn request_id_index(kind: IncomingMessages) -> Option<usize> {
match kind {
IncomingMessages::ContractData
| IncomingMessages::TickByTick
| IncomingMessages::SymbolSamples
| IncomingMessages::OpenOrder
| IncomingMessages::ExecutionData
| IncomingMessages::HeadTimestamp
| IncomingMessages::HistoricalData
| IncomingMessages::HistoricalSchedule
| IncomingMessages::HistoricalTick
| IncomingMessages::HistoricalTickBidAsk
| IncomingMessages::HistoricalTickLast
| IncomingMessages::HistoricalNews
| IncomingMessages::HistoricalNewsEnd
| IncomingMessages::NewsArticle
| IncomingMessages::TickNews
| IncomingMessages::TickOptionComputation
| IncomingMessages::TickReqParams
| IncomingMessages::PnL
| IncomingMessages::PnLSingle
| IncomingMessages::SecurityDefinitionOptionParameter
| IncomingMessages::SecurityDefinitionOptionParameterEnd
| IncomingMessages::HistogramData
| IncomingMessages::WshMetaData
| IncomingMessages::WshEventData => Some(1),
IncomingMessages::ContractDataEnd
| IncomingMessages::RealTimeBars
| IncomingMessages::Error
| IncomingMessages::ExecutionDataEnd
| IncomingMessages::AccountSummary
| IncomingMessages::AccountSummaryEnd
| IncomingMessages::AccountUpdateMulti
| IncomingMessages::AccountUpdateMultiEnd
| IncomingMessages::MarketDepth
| IncomingMessages::MarketDepthL2
| IncomingMessages::ScannerData
| IncomingMessages::TickSnapshotEnd
| IncomingMessages::TickPrice
| IncomingMessages::TickSize
| IncomingMessages::TickString
| IncomingMessages::TickEFP
| IncomingMessages::TickGeneric => Some(2),
IncomingMessages::AccountSummary => Some(2),
IncomingMessages::AccountSummaryEnd => Some(2),
IncomingMessages::AccountUpdateMulti => Some(2),
IncomingMessages::AccountUpdateMultiEnd => Some(2),
IncomingMessages::ContractData => Some(1),
IncomingMessages::ContractDataEnd => Some(2),
IncomingMessages::Error => Some(2),
IncomingMessages::ExecutionData => Some(1),
IncomingMessages::ExecutionDataEnd => Some(2),
IncomingMessages::HeadTimestamp => Some(1),
IncomingMessages::HistogramData => Some(1),
IncomingMessages::HistoricalData => Some(1),
IncomingMessages::HistoricalNews => Some(1),
IncomingMessages::HistoricalNewsEnd => Some(1),
IncomingMessages::HistoricalSchedule => Some(1),
IncomingMessages::HistoricalTick => Some(1),
IncomingMessages::HistoricalTickBidAsk => Some(1),
IncomingMessages::HistoricalTickLast => Some(1),
IncomingMessages::MarketDepth => Some(2),
IncomingMessages::MarketDepthL2 => Some(2),
IncomingMessages::NewsArticle => Some(1),
IncomingMessages::OpenOrder => Some(1),
IncomingMessages::PnL => Some(1),
IncomingMessages::PnLSingle => Some(1),
IncomingMessages::RealTimeBars => Some(2),
IncomingMessages::ScannerData => Some(2),
IncomingMessages::SecurityDefinitionOptionParameter => Some(1),
IncomingMessages::SecurityDefinitionOptionParameterEnd => Some(1),
IncomingMessages::SymbolSamples => Some(1),
IncomingMessages::TickByTick => Some(1),
IncomingMessages::TickEFP => Some(2),
IncomingMessages::TickGeneric => Some(2),
IncomingMessages::TickNews => Some(1),
IncomingMessages::TickOptionComputation => Some(1),
IncomingMessages::TickPrice => Some(2),
IncomingMessages::TickReqParams => Some(2),
IncomingMessages::TickSize => Some(2),
IncomingMessages::TickSnapshotEnd => Some(2),
IncomingMessages::TickString => Some(2),
IncomingMessages::WshEventData => Some(1),
IncomingMessages::WshMetaData => Some(1),

_ => {
debug!("could not determine request id index for {kind:?}");
debug!("could not determine request id index for {kind:?} (this message type may not have a request id).");
None
}
}
Expand Down
26 changes: 13 additions & 13 deletions src/transport.rs
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,7 @@ impl TcpMessageBus {
// First check matching orders channel
(Some(order_id), _) if self.orders.contains(&order_id) => {
if let Err(e) = self.orders.send(&order_id, Ok(message)) {
error!("error routing message for order_id({order_id}): {e}");
warn!("error routing message for order_id({order_id}): {e}");
}
}
(_, Some(request_id)) if self.requests.contains(&request_id) => {
Expand All @@ -315,11 +315,11 @@ impl TcpMessageBus {
}

if let Err(e) = self.requests.send(&request_id, Ok(message)) {
error!("error routing message for request_id({request_id}): {e}");
warn!("error routing message for request_id({request_id}): {e}");
}
}
_ => {
error!("could not route message {message:?}");
warn!("could not route message {message:?}");
}
}
}
Expand All @@ -328,24 +328,24 @@ impl TcpMessageBus {
// First check matching orders channel
(Some(order_id), _) if self.orders.contains(&order_id) => {
if let Err(e) = self.orders.send(&order_id, Ok(message)) {
error!("error routing message for order_id({order_id}): {e}");
warn!("error routing message for order_id({order_id}): {e}");
}
}
(_, Some(request_id)) if self.requests.contains(&request_id) => {
if let Err(e) = self.requests.send(&request_id, Ok(message)) {
error!("error routing message for request_id({request_id}): {e}");
warn!("error routing message for request_id({request_id}): {e}");
}
}
_ => {
error!("could not route message {message:?}");
warn!("could not route message {message:?}");
}
}
}
IncomingMessages::OpenOrder | IncomingMessages::OrderStatus => {
if let Some(order_id) = message.order_id() {
if self.orders.contains(&order_id) {
if let Err(e) = self.orders.send(&order_id, Ok(message)) {
error!("error routing message for order_id({order_id}): {e}");
warn!("error routing message for order_id({order_id}): {e}");
}
} else if self.shared_channels.contains_sender(IncomingMessages::OpenOrder) {
self.shared_channels.send_message(message.message_type(), &message);
Expand All @@ -358,7 +358,7 @@ impl TcpMessageBus {
IncomingMessages::CommissionsReport => {
if let Some(execution_id) = message.execution_id() {
if let Err(e) = self.executions.send(&execution_id, Ok(message)) {
error!("error sending commission report for execution {}: {}", execution_id, e);
warn!("error sending commission report for execution {}: {}", execution_id, e);
}
}
}
Expand Down Expand Up @@ -563,10 +563,10 @@ impl<K: std::hash::Hash + Eq + std::fmt::Debug, V: std::fmt::Debug + Clone> Send
debug!("senders: {senders:?}");
if let Some(sender) = senders.get(id) {
if let Err(err) = sender.send(message) {
error!("error sending: {id:?}, {err}")
warn!("error sending: {id:?}, {err}")
}
} else {
error!("no recipient found for: {id:?}, {message:?}")
warn!("no recipient found for: {id:?}, {message:?}")
}
Ok(())
}
Expand Down Expand Up @@ -683,7 +683,7 @@ impl Drop for InternalSubscription {
fn drop(&mut self) {
if let (Some(request_id), Some(signaler)) = (self.request_id, &self.signaler) {
if let Err(e) = signaler.send(Signal::Request(request_id)) {
error!("error sending drop signal: {e}");
warn!("error sending drop signal: {e}");
}
}

Expand Down Expand Up @@ -1056,12 +1056,12 @@ fn parse_connection_time(connection_time: &str) -> (Option<OffsetDateTime>, Opti
Ok(connected_at) => match connected_at.assume_timezone(timezone) {
OffsetResult::Some(date) => (Some(date), Some(timezone)),
_ => {
error!("error setting timezone");
warn!("error setting timezone");
(None, Some(timezone))
}
},
Err(err) => {
error!("could not parse connection time from {date_str}: {err}");
warn!("could not parse connection time from {date_str}: {err}");
(None, Some(timezone))
}
}
Expand Down

0 comments on commit 9de0bb1

Please sign in to comment.