Skip to main content

Crate rvoip_core_traits

Crate rvoip_core_traits 

Source
Expand description

§rvoip-core-traits

Pure-data trait + type surface for the rvoip ecosystem.

Carved out from rvoip-core (per GAP_PLAN.md V2.A) to break the rvoip-core → rvoip-vcon → rvoip-auth-core → rvoip-core dep cycle. Consumer crates (rvoip-auth-core, rvoip-vcon, rvoip-harness, rvoip-identity, and every adapter) depend on this crate for the types they need; rvoip-core itself re-exports from here so call sites like use rvoip_core::ids::ConnectionId keep working.

§Layering rule

This crate has zero rvoip-* dependencies — that’s what breaks the cycle. It depends only on bytes, chrono, serde, serde_json, and uuid.

§What lives here

  • ids — every *Id newtype (ConnectionId, SessionId, ConversationId, ParticipantId, IdentityId, etc.).
  • adapter — pure adapter-facing request/event/reason structs (AdapterEvent, OriginateRequest, EndReason, etc.).
  • identity — the pure-data identity types IdentityAssurance, Jwk, CredentialKind, Credential, IdentityKind, DeviceKind. The IdentityProvider trait + the structs that reference rvoip-core’s Result type (Identity, Device, ReachabilityHint) stay in rvoip-core::identity because they need the orchestrator’s error type.

§Future scope

Subsequent V2.A.* phases can move more modules here (events, commands, full identity trait, vcon types, signing, store traits, and eventually the full ConnectionAdapter trait once message and command types have moved) as the workspace’s appetite for the move-cost tradeoff grows.

Re-exports§

pub use adapter::ExternalConnectionReference;
pub use adapter::ExternalConnectionReferenceError;
pub use adapter::InboundConnectionContext;
pub use adapter::InboundContextError;
pub use adapter::InboundRoutingHint;
pub use adapter::InboundSignalingMetadata;
pub use adapter::OriginateContext;
pub use adapter::OutboundActivation;
pub use adapter::TransferStatus;
pub use adapter::MAX_EXTERNAL_CONNECTION_REFERENCES;
pub use adapter::MAX_EXTERNAL_REFERENCE_KIND_BYTES;
pub use adapter::MAX_EXTERNAL_REFERENCE_VALUE_BYTES;
pub use adapter::MAX_INBOUND_METADATA_BYTES;
pub use adapter::MAX_INBOUND_METADATA_FIELDS;
pub use adapter::MAX_INBOUND_METADATA_NAME_BYTES;
pub use adapter::MAX_INBOUND_METADATA_VALUE_BYTES;
pub use adapter::MAX_INBOUND_ROUTING_HINT_BYTES;
pub use broadcast::BroadcastDescriptor;
pub use broadcast::BroadcastDrainDescriptor;
pub use broadcast::BroadcastDrainReason;
pub use broadcast::BroadcastDrainRequest;
pub use broadcast::BroadcastDrainState;
pub use broadcast::BroadcastEndpoint;
pub use broadcast::BroadcastHealthDescriptor;
pub use broadcast::BroadcastHealthIssue;
pub use broadcast::BroadcastHealthStatus;
pub use broadcast::BroadcastLifecycleDescriptor;
pub use broadcast::BroadcastLifecycleState;
pub use broadcast::BroadcastProtocolDescriptor;
pub use broadcast::BroadcastProtocolFamily;
pub use broadcast::BroadcastPublisher;
pub use broadcast::BroadcastRelayHop;
pub use broadcast::BroadcastRelayRole;
pub use broadcast::BroadcastResource;
pub use broadcast::BroadcastSanitizedEvent;
pub use broadcast::BroadcastSanitizedEventCapability;
pub use broadcast::BroadcastSanitizedEventError;
pub use broadcast::BroadcastSanitizedEventKind;
pub use broadcast::BroadcastSubstrate;
pub use broadcast::BroadcastTransport;
pub use broadcast::MAX_BROADCAST_EVENT_JSON_INTEGER;
pub use data::DataMessage;
pub use data::DataMessageValidationError;
pub use data::DataReliability;
pub use data::MAX_CONTENT_TYPE_BYTES;
pub use data::MAX_DATA_LABEL_BYTES;
pub use data::MAX_DATA_MESSAGE_BYTES;
pub use data::MAX_DATA_MESSAGE_ID_BYTES;
pub use identity::AuthenticatedPrincipal;
pub use identity::AuthenticationMethod;
pub use identity::BearerAuthError;
pub use identity::PrincipalOwnershipKey;
pub use ids::TransferAttemptId;

Modules§

adapter
broadcast
Transport-neutral one-to-many media publication contracts.
capability
connection
data
Transport-neutral reliable/unreliable data messages.
error
harness
P5 — provider trait surface for the recording / transcription / AI harness paths. Per INTERFACE_DESIGN.md §2.1 these trait shapes live in rvoip-core so the Orchestrator can dispatch generically; concrete impls (Whisper, Claude, S3, …) ship in consumer crates or in rvoip-harness (which re-exports these and supplies no-op defaults).
identity
Identity data types — moved here (V2.A.1) so consumer crates like rvoip-auth-core and rvoip-vcon can depend on rvoip-core-traits instead of rvoip-core, breaking the dep cycle.
ids
Strongly-typed identifiers — the canonical home post-V2.A.
stream