libchat/Cargo.toml
osmaczko 7838d43b30
feat(client): add threaded transport polling (#125)
The client, not the app, now drives the transport; events are delivered
asynchronously, per ADR 0001.

- ChatClient owns Arc<Mutex<Core>> + a worker thread.
- The worker select!s over the inbound and shutdown channels; Drop joins it.
  Outbound runs on the caller's thread.
- A single Transport (DeliveryService + inbound()) owns both directions of the
  boundary, so the client takes one transport rather than a (delivery, inbound)
  pair. InProcessDelivery::new, CDelivery, and chat-cli's transports implement it.
- FFI replaces client_receive with client_push_inbound + client_poll_events.
- chat-cli drains Receiver<Event>; inbound and event channels are both crossbeam.
- Corrects ADR 0001's inbound sequence to push — the worker parks on select!,
  it never polls.
2026-06-11 10:08:07 +02:00

53 lines
1.2 KiB
TOML

[workspace]
resolver = "3"
members = [
"bin/chat-cli",
"bin/keypackage-registry",
"core/account",
"core/conversations",
"core/crypto",
"core/double-ratchets",
"core/integration_tests_core",
"core/shared-traits",
"core/sqlite",
"core/storage",
"crates/client-ffi",
"crates/client",
"extensions/components",
]
default-members = [
"core/account",
"core/conversations",
"core/crypto",
"core/double-ratchets",
"core/integration_tests_core",
"core/shared-traits",
"core/sqlite",
"core/storage",
"crates/client-ffi",
"crates/client",
]
[workspace.dependencies]
# Internal Workspace dependency declarations (sorted)
logos-account = { path = "core/account" }
chat-sqlite = { path = "core/sqlite" }
components = { path = "extensions/components" }
crypto = { path = "core/crypto" }
libchat = { path = "core/conversations" }
logos-chat = { path = "crates/client" }
shared-traits = { path = "core/shared-traits" }
storage = { path = "core/storage" }
# External Workspace dependency declarations (sorted)
blake2 = "0.10"
crossbeam-channel = "0.5"
# Panicking across FFI boundaries is UB; abort is the correct strategy for a
# C FFI library.
[profile.release]
panic = "abort"