Skip to main content

force_pubsub/
lib.rs

1//! Salesforce Pub/Sub API client for Rust.
2//!
3//! This crate provides a gRPC client for the Salesforce Pub/Sub API,
4//! supporting subscribe, publish, and schema operations.
5
6#![forbid(unsafe_code)]
7#![warn(missing_docs)]
8#![allow(clippy::doc_markdown)]
9#![allow(clippy::missing_errors_doc)]
10// tonic::Status is 176 bytes; suppressed crate-wide rather than boxing
11// through every From impl and call site.
12#![allow(clippy::result_large_err)]
13
14pub(crate) mod codec;
15pub(crate) mod config;
16pub(crate) mod error;
17pub(crate) mod handler;
18pub(crate) mod interceptor;
19pub(crate) mod types;
20
21pub(crate) mod publish_sink;
22pub(crate) mod publisher;
23pub(crate) mod schema_cache;
24pub(crate) mod subscriber;
25
26pub use config::{BackoffConfig, PubSubConfig, ReconnectPolicy, ReplayPreset};
27pub use error::{PubSubError, Result};
28pub use handler::{PubSubHandler, SchemaInfo, TopicInfo};
29pub use publish_sink::PublishSink;
30pub use schema_cache::SchemaCache;
31pub use types::{EventMessage, PubSubEvent, PublishResponse, PublishResult, ReplayId};
32
33/// Generated protobuf types from the Salesforce Pub/Sub API proto.
34pub mod proto {
35    /// Generated types from the `eventbus.v1` protobuf package.
36    pub mod eventbus_v1 {
37        // Generated code does not carry doc comments or follow all clippy rules.
38        #![allow(missing_docs)]
39        #![allow(clippy::derive_partial_eq_without_eq)]
40        #![allow(clippy::must_use_candidate)]
41        #![allow(clippy::missing_const_for_fn)]
42        #![allow(clippy::default_trait_access)]
43        #![allow(clippy::too_many_lines)]
44        tonic::include_proto!("eventbus.v1");
45    }
46}
47pub use codec::decode_avro_typed;
48pub use codec::encode_avro;