#![deny(missing_docs)]
#![deny(clippy::unwrap_used)]
#![deny(clippy::panic)]
#![warn(clippy::expect_used)]
#![cfg_attr(not(feature = "std"), no_std)]
#[cfg(feature = "alloc")]
extern crate alloc;
pub mod error;
#[cfg(feature = "publisher")]
pub mod publisher;
#[cfg(feature = "subscriber")]
pub mod subscriber;
#[cfg(feature = "schema")]
pub mod schema;
#[cfg(feature = "monitoring")]
pub mod monitoring;
pub mod topic;
pub mod subscription;
pub use error::{PubSubError, Result};
#[cfg(feature = "publisher")]
pub use publisher::{
DEFAULT_BATCH_SIZE, DEFAULT_BATCH_TIMEOUT_MS, DEFAULT_MAX_OUTSTANDING_PUBLISHES,
MAX_MESSAGE_SIZE, Message, Publisher, PublisherConfig, PublisherStats, RetryConfig,
};
#[cfg(feature = "subscriber")]
pub use subscriber::{
DEFAULT_ACK_DEADLINE_SECONDS, DEFAULT_HANDLER_CONCURRENCY, DEFAULT_MAX_OUTSTANDING_BYTES,
DEFAULT_MAX_OUTSTANDING_MESSAGES, DeadLetterConfig, FlowControlSettings, HandlerResult,
ReceivedMessage, Subscriber, SubscriberConfig, SubscriberStats, SubscriptionType,
};
#[cfg(feature = "schema")]
pub use schema::{Schema, SchemaEncoding, SchemaRegistry, SchemaValidator};
#[cfg(all(feature = "schema", feature = "avro"))]
pub use schema::AvroSchema;
#[cfg(all(feature = "schema", feature = "protobuf"))]
pub use schema::ProtobufSchema;
#[cfg(feature = "monitoring")]
pub use monitoring::{
LatencyTracker, MetricPoint, MetricType, MetricValue, MetricsCollector, MetricsExporter,
OperationTimer, PublisherMetrics, SubscriberMetrics,
};
pub use topic::{TopicBuilder, TopicConfig, TopicManager, TopicMetadata, TopicStats};
#[cfg(feature = "schema")]
pub use topic::SchemaSettings;
pub use subscription::{
DeadLetterPolicy, ExpirationPolicy, RetryPolicy, SubscriptionBuilder, SubscriptionCreateConfig,
SubscriptionManager, SubscriptionMetadata, SubscriptionStats,
};
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
pub const CRATE_NAME: &str = env!("CARGO_PKG_NAME");
pub fn version() -> &'static str {
VERSION
}
pub fn crate_name() -> &'static str {
CRATE_NAME
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_version() {
assert!(!version().is_empty());
}
#[test]
fn test_crate_name() {
assert_eq!(crate_name(), "oxigdal-pubsub");
}
}