mod event_data;
pub use azure_core_amqp::AmqpMessage;
pub use azure_core_amqp::AmqpValue;
pub use azure_core_amqp::AmqpTransport;
pub use azure_core_amqp::AmqpSimpleValue;
pub use event_data::ReceivedEventData;
pub use crate::event_processor::models::{Checkpoint, Ownership, StartPositions};
pub mod builders {
pub use crate::models::event_data::builders::EventDataBuilder;
}
pub use event_data::EventData;
use azure_core::Uuid;
use azure_core_amqp::message::AmqpMessageId;
use std::fmt::Debug;
use std::time::SystemTime;
#[derive(Debug)]
pub struct EventHubProperties {
pub name: String,
pub created_on: Option<SystemTime>,
pub partition_ids: Vec<String>,
}
#[derive(Debug)]
pub struct EventHubPartitionProperties {
pub id: String,
pub eventhub: String,
pub beginning_sequence_number: i64,
pub last_enqueued_sequence_number: i64,
pub last_enqueued_offset: String,
pub last_enqueued_time_utc: Option<SystemTime>,
pub is_empty: bool,
}
#[derive(Debug, PartialEq, Clone)]
pub enum MessageId {
Binary(Vec<u8>),
String(String),
Ulong(u64),
Uuid(Uuid),
}
impl From<u64> for MessageId {
fn from(value: u64) -> Self {
Self::Ulong(value)
}
}
impl From<Uuid> for MessageId {
fn from(value: Uuid) -> Self {
Self::Uuid(value)
}
}
impl From<Vec<u8>> for MessageId {
fn from(value: Vec<u8>) -> Self {
Self::Binary(value)
}
}
impl From<&str> for MessageId {
fn from(value: &str) -> Self {
Self::String(value.to_string())
}
}
impl From<String> for MessageId {
fn from(value: String) -> Self {
Self::String(value)
}
}
impl From<MessageId> for Uuid {
fn from(message_id: MessageId) -> Self {
match message_id {
MessageId::Uuid(uuid) => uuid,
_ => panic!("Cannot convert MessageId to Uuid"),
}
}
}
impl From<MessageId> for Vec<u8> {
fn from(message_id: MessageId) -> Self {
match message_id {
MessageId::Binary(binary) => binary,
_ => panic!("Cannot convert MessageId to Vec<u8>"),
}
}
}
impl From<MessageId> for String {
fn from(message_id: MessageId) -> Self {
match message_id {
MessageId::String(string) => string,
_ => panic!("Cannot convert MessageId to String"),
}
}
}
impl From<MessageId> for u64 {
fn from(message_id: MessageId) -> Self {
match message_id {
MessageId::Ulong(ulong) => ulong,
_ => panic!("Cannot convert MessageId to u64"),
}
}
}
impl From<AmqpMessageId> for MessageId {
fn from(message_id: AmqpMessageId) -> Self {
match message_id {
AmqpMessageId::String(string) => MessageId::String(string),
AmqpMessageId::Uuid(uuid) => MessageId::Uuid(uuid),
AmqpMessageId::Binary(binary) => MessageId::Binary(binary),
AmqpMessageId::Ulong(ulong) => MessageId::Ulong(ulong),
}
}
}
impl From<MessageId> for AmqpMessageId {
fn from(message_id: MessageId) -> Self {
match message_id {
MessageId::String(string) => AmqpMessageId::String(string),
MessageId::Uuid(uuid) => AmqpMessageId::Uuid(uuid),
MessageId::Binary(binary) => AmqpMessageId::Binary(binary),
MessageId::Ulong(ulong) => AmqpMessageId::Ulong(ulong),
}
}
}
#[derive(Debug, Clone)]
pub(crate) struct ConsumerClientDetails {
pub fully_qualified_namespace: String,
pub consumer_group: String,
pub eventhub_name: String,
pub client_id: String,
}
#[cfg(test)]
mod tests {
use super::*;
use azure_core_amqp::message::AmqpMessageId;
#[test]
fn test_message_id_from_u64() {
let value: u64 = 123;
let message_id = MessageId::from(value);
assert_eq!(message_id, MessageId::Ulong(value));
}
#[test]
fn test_message_id_from_uuid() {
let value = Uuid::new_v4();
let message_id = MessageId::from(value);
assert_eq!(message_id, MessageId::Uuid(value));
}
#[test]
fn test_message_id_from_vec_u8() {
let value: Vec<u8> = vec![1, 2, 3];
let message_id = MessageId::from(value.clone());
assert_eq!(message_id, MessageId::Binary(value));
}
#[test]
fn test_message_id_from_string() {
let value = "test".to_string();
let message_id = MessageId::from(value.clone());
assert_eq!(message_id, MessageId::String(value));
}
#[test]
fn test_message_id_into_uuid() {
let value = Uuid::new_v4();
let message_id: MessageId = value.into();
assert_eq!(message_id, MessageId::Uuid(value));
}
#[test]
fn test_message_id_into_vec_u8() {
let value: Vec<u8> = vec![1, 2, 3];
let message_id: MessageId = value.clone().into();
assert_eq!(message_id, MessageId::Binary(value));
}
#[test]
fn test_message_id_into_string() {
let value = "test".to_string();
let message_id: MessageId = value.clone().into();
assert_eq!(message_id, MessageId::String(value));
}
#[test]
fn test_message_id_into_u64() {
let value: u64 = 123;
let message_id: MessageId = value.into();
assert_eq!(message_id, MessageId::Ulong(value));
}
#[test]
fn test_message_id_from_amqp_message_id() {
let value = AmqpMessageId::Binary(vec![2, 4, 6, 8]);
let message_id = MessageId::from(value.clone());
assert_eq!(message_id, MessageId::from(value));
}
#[test]
fn test_message_id_into_amqp_message_id() {
let value = AmqpMessageId::Binary(vec![3, 5, 7, 9]);
let message_id: MessageId = value.clone().into();
assert_eq!(message_id, MessageId::from(value));
}
}