Expand description
§liner_broker
liner_broker is a simple and fast redis based message serverless broker.
Data transfer via TCP.
§Examples
use liner_broker::Liner;
fn main() {
let mut client1 = Liner::new("client1", "topic_client1", "localhost:2255", "redis://localhost/");
let mut client2 = Liner::new("client2", "topic_client2", "localhost:2256", "redis://localhost/");
client1.run(Box::new(|_to: &str, _from: &str, _data: &[u8]|{
println!("receive_from {}", _from);
}));
client2.run(Box::new(|_to: &str, _from: &str, _data: &[u8]|{
println!("receive_from {}", _from);
}));
let array = [0; 100];
for _ in 0..10{
client1.send_to("topic_client2", array.as_slice(), true);
println!("send_to client2");
}
}
Modules§
Macros§
Structs§
- Client
- Public client handle. Internally boxed so
runmay pass a stableselfpointer to background listener threads; moving this handle does not move that state. - Liner
- Receiver
Seed Entry - One catalog row for
Store::seed_receivers(JSON shape matches the Creceivers_jsonarray). - Status
Emitter - Shared between
Clientand background sender threads. - UData
Enums§
- Error
Code - Stable
i32values shared withinclude/liner.h. - Status
Msg - Keys into the status detail message map ([
status_msg_templates]). - Store
Backend
Constants§
- LNR_
LISTENER_ STORE_ ERROR - Listener: background store / DB error on ack / lookup paths.
- LNR_
PEER_ CONNECTED - Peer registered /
run(internalclient_connected), related topic only. - LNR_
PEER_ DISCONNECTED - Peer teardown (internal
client_disconnected), related topic only. - LNR_
PEER_ SUBSCRIBED - Peer
subscribe(internalsubscribed), related topic only. - LNR_
PEER_ UNSUBSCRIBED - Peer
unsubscribe(internalunsubscribed), related topic only. - LNR_
SENDER_ BUSY - Sender: sync enqueue rejected because peer send queue is full (
max_send_queue). - LNR_
SENDER_ ROUTE_ LOST - Sender: TCP connect fail or stream close for a local route.
- LNR_
SENDER_ SEND_ ERROR - Sender: background write/flush failure after an accepted send.
- LNR_
SENDER_ STORE_ ERROR - Sender: background store / DB error on send-reconnect / persist paths.
Traits§
- Store
- Operations the broker needs from a key–value / queue style store.
Functions§
- lnr_
advertise_ ⚠addr - Safety
- lnr_
bound_ ⚠listen_ addr - Safety
- lnr_
clear_ ⚠addresses_ of_ topic - Cleaning client addresses. Call only when the client is not running yet.
- lnr_
clear_ ⚠stored_ messages - Clearing messages that were not previously sent for some reason. Call only when the client is not running yet.
- lnr_
delete_ ⚠client - Deleting a client.
- lnr_
get_ ⚠compress_ threshold - Safety
- lnr_
get_ ⚠max_ message_ size - Safety
- lnr_
get_ ⚠max_ send_ queue - Safety
- lnr_
is_ ⚠running - Safety
- lnr_
last_ ⚠error_ code - Last sync-API error code (
LNR_OK/LNR_ERR_*). ReturnsLNR_OKfor a null handle. - lnr_
last_ ⚠error_ message - Safety
- lnr_
list_ ⚠addresses - Safety
- lnr_
new_ ⚠client - Deprecated: use
lnr_new_client_redis. Same behavior aslnr_new_client_redis. - lnr_
new_ ⚠client_ redis - Create new client (Redis URL).
- lnr_
new_ ⚠client_ sqlite - Create new client (SQLite database file path).
- lnr_
pending_ ⚠by_ peer - Safety
- lnr_
pending_ ⚠count - Safety
- lnr_
published_ ⚠addr - Safety
- lnr_
refresh_ ⚠address_ topic - Refresh address of topic (actual for new clients)
- lnr_run⚠
- Launching a client to send messages and listen for incoming messages.
- lnr_
send_ ⚠all - Send message to other clients. Call only when the client is already running.
- lnr_
send_ ⚠to - Send message to other client. Call only when the client is already running.
- lnr_
set_ ⚠advertise_ addr - Set advertise address before
lnr_run.addr == NULLor empty clears. - lnr_
set_ ⚠compress_ threshold - Safety
- lnr_
set_ ⚠log_ cb - Safety
- lnr_
set_ ⚠max_ message_ size - Safety
- lnr_
set_ ⚠max_ send_ queue - Safety
- lnr_
set_ ⚠status_ cb - Set or clear the status / background-error callback.
- lnr_
stop ⚠ - Stop the client (unregister + join threads). Idempotent.
- lnr_
subscribe ⚠ - Subscribe to the topic and receive messages from other clients.
- lnr_
unsubscribe ⚠ - Unsubscribe from the topic and do not receive messages from other clients.
- lnr_
version ⚠ - Safety
- open_
store - open_
store_ mutex - Same backends as
open_store, shared across Client / Listener / Sender threads. - set_
log_ cb - Install or clear the global log callback.
Nonerestores stderr-only behavior. - version
- Crate version string (same as
lnr_version/CARGO_PKG_VERSION).