• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

wboayue / rust-ibapi / 25402446613
92%

Build:
DEFAULT BRANCH: main
Ran 05 May 2026 09:10PM UTC
Jobs 1
Files 124
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

05 May 2026 09:08PM UTC coverage: 87.873% (-0.04%) from 87.916%
25402446613

push

github

web-flow
feat(connection): typed StartupMessage + StartupNoticeCallback (#513)

* feat(connection): typed StartupMessage + StartupNoticeCallback

Refactors ConnectionOptions::startup_callback from Fn(ResponseMessage) to
Fn(StartupMessage) with typed domain-object variants, and adds a separate
startup_notice_callback for handshake-time IB notices that were previously
log-only.

Fills the gap PR 5 (#512) did not address: notices like 2104/2106/2158
farm-status arrive during the handshake before process_messages starts, so
notice_stream never sees them. The new startup_notice_callback fires for
them inline.

Public API:
- StartupMessage = OpenOrder(OrderData) | OrderStatus(OrderStatus)
                 | OpenOrderEnd | AccountUpdate(AccountUpdate)
                 | Other(ResponseMessage)
- StartupMessageCallback = Box<dyn Fn(StartupMessage)>  (breaking; 3.0)
- StartupNoticeCallback  = Box<dyn Fn(Notice)>          (new)
- ConnectionOptions::startup_notice_callback(...) builder

Both callbacks now persist on Connection<S>/AsyncConnection<S> and fire on
auto-reconnect handshakes too (previously the existing callback was hardcoded
to None on reconnect).

Internal cleanup:
- parse_account_info reduced to NextValidId/ManagedAccounts; everything else
  delegated to a new dispatch_unsolicited_message free fn (SRP split).
- StartupCallbacks<'a> bundles both callbacks for threading (project rule:
  max 3 fn args).
- decode_*_either helpers in orders/accounts decoder modules pick proto-vs-text.

Tests: sync 943 lib + async 945 lib + all-features 1155 lib + 74 doc.
Live-gateway diagnostic confirmed OpenOrderEnd lands as the typed variant.
Clippy clean across default, sync-only, and --all-features.

* refactor(connection): reuse decode_error_envelope for handshake notices

The handshake-time Error decoder in connection/common.rs duplicated the
protobuf ErrorMessage decode that already lives in transport/routing.rs.
Worse: the handshake version dropped error_time (set to None... (continued)

104 of 145 new or added lines in 6 files covered. (71.72%)

2 existing lines in 2 files now uncovered.

17268 of 19651 relevant lines covered (87.87%)

26.86 hits per line

Uncovered Changes

Lines Coverage ∆ File
14
85.86
4.94% src/connection/common.rs
11
89.88
-5.15% src/connection/sync.rs
9
75.68
-2.62% src/connection/async.rs
7
91.75
-2.02% src/accounts/common/decoders/mod.rs

Coverage Regressions

Lines Coverage ∆ File
1
85.86
4.94% src/connection/common.rs
1
89.88
-5.15% src/connection/sync.rs
Jobs
ID Job ID Ran Files Coverage
1 25402446613.1 05 May 2026 09:10PM UTC 124
87.87
GitHub Action Run
Source Files on build 25402446613
  • Tree
  • List 124
  • Changed 10
  • Source Changed 9
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #25402446613
  • 4de02258 on github
  • Prev Build on main (#25397008708)
  • Next Build on main (#25406495849)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc