im-core 0.1.0

Rust IM SDK for Awiki clients built on Agent Network Protocol (ANP)
Documentation
mod control;
mod dto;
mod events;
#[cfg(feature = "blocking")]
mod handle;
pub(crate) mod runner;
mod service;
mod session;
#[doc(hidden)]
pub mod wire;

pub use self::control::{RealtimeControl, ShutdownSignal};
pub use self::dto::{
    RealtimeConnectionState, RealtimeExit, RealtimeExitReason, RealtimeOptions, RealtimeStatus,
    RealtimeSubscription, ReconnectPolicy,
};
pub use self::events::{
    AttachmentDownloadAction, AttachmentMessageSummary, ConnectionStateChanged, GroupUpdateKind,
    GroupUpdatedEvent, HostNotificationEvent, HostNotificationKind, ImEvent,
    LocalNotificationEvent, MessageReceivedEvent, MessageUpdateKind, MessageUpdatedEvent,
    RealtimeSyncHint, UnknownNotificationEvent,
};
#[cfg(feature = "blocking")]
pub use self::handle::{RealtimeEventReceiver, RealtimeHandle};
#[cfg(feature = "blocking")]
pub use self::runner::{
    run_realtime_transport_until_shutdown, run_realtime_transport_with_event_sink_until_shutdown,
    RealtimeRunnerEventSink, RealtimeRunnerOutcome, RealtimeRunnerTransport,
};
pub use self::service::RealtimeService;
pub use self::session::{RealtimeEventStream, RealtimeSession};
#[doc(hidden)]
pub use crate::internal::realtime::dispatch::{
    ListenerWsDispatchOutcome, ListenerWsPendingDispatch,
};
#[doc(hidden)]
pub use crate::internal::realtime::frame::{
    build_ws_rpc_request, classify_incoming_message, decode_ws_rpc_result, int64_from_value,
    next_ws_rpc_request_id, pending_failure_response, request_id_from_value, IncomingWsMessage,
};
#[doc(hidden)]
pub use crate::internal::realtime::heartbeat::{
    consume_notifications_step, ConsumeNotificationsAction, ConsumeNotificationsDecision,
    ConsumeNotificationsEvent, ConsumeNotificationsStep, NotificationPingOutcome,
    SESSION_PING_INTERVAL, SESSION_PING_TIMEOUT,
};
#[doc(hidden)]
#[cfg(feature = "sqlite")]
pub use crate::internal::realtime::local_projection::{
    apply_realtime_message_local_projection, plan_realtime_message_local_projection,
    RealtimeMessageLocalProjection, RealtimeMessageLocalProjectionContext,
};
#[doc(hidden)]
pub use crate::internal::realtime::notification::LISTENER_WS_NOTIFICATION_QUEUE_CAPACITY;
#[doc(hidden)]
pub use crate::internal::realtime::projection::{
    is_direct_secure_wire_notification, project_notification, realtime_sync_gap_detected,
    sync_hint, sync_hint_with_gap, NotificationProjection, NotificationProjectionRoute,
};
#[doc(hidden)]
pub use crate::internal::realtime::reconnect::{
    ConsumeFinishedDecision, ContextSleep, SessionLoopBackoff, SessionLoopRetryDecision,
    SessionLoopRetryPhase, SESSION_RECONNECT_BASE_DELAY, SESSION_RECONNECT_MAX_DELAY,
};
#[doc(hidden)]
pub use crate::internal::realtime::session_loop::{
    secure_prekey_retry_decision, session_loop_start_decision, ConnectedSessionAction,
    ConsumeFinishedAction, InitialSessionSignal, SecurePrekeyRetryDecision,
    SessionLoopStartDecision, CONNECTED_SESSION_ACTIONS, CONSUME_FINISHED_ACTIONS,
    SECURE_PREKEY_RETRY_DELAY,
};
#[doc(hidden)]
pub use crate::internal::realtime::shutdown::{shutdown_decision, RealtimeShutdownDecision};
#[doc(hidden)]
pub use crate::internal::realtime::transport::{
    bearer_authorization_header, derive_websocket_url, format_dial_error_message, join_base_url,
    realtime_client_construction_plan, realtime_client_endpoints, simulate_realtime_connect,
    validate_refresh_bearer_preconditions, RealtimeClientConstructionPlan, RealtimeClientEndpoints,
    RealtimeConnectAction, RealtimeConnectSimulation, RealtimeDialOutcome, RealtimeRefreshOutcome,
    DIAL_ERROR_BODY_LIMIT, MESSAGE_WS_ENDPOINT,
};
#[doc(hidden)]
#[cfg(feature = "blocking")]
pub use crate::internal::realtime::transport::{
    connect_realtime_with_transport, RealtimeAuthProvider, RealtimeTransport,
};