Skip to main content

ApplicationSource

Struct ApplicationSource 

Source
pub struct ApplicationSource { /* private fields */ }
Expand description

A source that allows applications to programmatically inject events.

This source receives events from an ApplicationSourceHandle and forwards them to the Drasi query processing pipeline.

§Fields

  • base: Common source functionality (dispatchers, status, lifecycle, bootstrap)
  • config: Application source configuration
  • app_rx: Receiver for events from the handle
  • app_tx: Sender for creating additional handles

Implementations§

Source§

impl ApplicationSource

Source

pub fn new( id: impl Into<String>, config: ApplicationSourceConfig, ) -> Result<(Self, ApplicationSourceHandle)>

Create a new application source and its handle.

The event channel is automatically injected when the source is added to DrasiLib via add_source().

§Arguments
  • id - Unique identifier for this source instance
  • config - Application source configuration
§Returns

A tuple of (ApplicationSource, ApplicationSourceHandle) where the handle can be used to send events to the source.

§Errors

Returns an error if the base source cannot be initialized.

§Example
use drasi_source_application::{ApplicationSource, ApplicationSourceConfig};

let config = ApplicationSourceConfig::default();
let (source, handle) = ApplicationSource::new("my-source", config)?;
Source

pub fn get_handle(&self) -> ApplicationSourceHandle

Get a new handle for this source

The handle shares the WAL reference with the source, so handles obtained before or after start() will automatically use WAL when durability is enabled.

Trait Implementations§

Source§

impl Source for ApplicationSource

Source§

fn id(&self) -> &str

Get the source’s unique identifier
Source§

fn type_name(&self) -> &str

Get the source type name (e.g., “postgres”, “http”, “mock”)
Source§

fn properties(&self) -> HashMap<String, Value>

Return all configuration properties for this source, including secrets. Read more
Source§

fn auto_start(&self) -> bool

Whether this source should auto-start when DrasiLib starts Read more
Source§

fn start<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Start the source Read more
Source§

fn stop<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Stop the source Read more
Source§

fn status<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ComponentStatus> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get the current status of the source
Source§

fn subscribe<'life0, 'async_trait>( &'life0 self, settings: SourceSubscriptionSettings, ) -> Pin<Box<dyn Future<Output = Result<SubscriptionResponse>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Subscribe to this source for change events. Read more
Source§

fn supports_replay(&self) -> bool

Whether this source supports positional replay via resume_from. Read more
Source§

fn deprovision<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Permanently clean up internal state when the source is being removed. Read more
Source§

fn as_any(&self) -> &dyn Any

Downcast helper for testing - allows access to concrete types
Source§

fn initialize<'life0, 'async_trait>( &'life0 self, context: SourceRuntimeContext, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Initialize the source with runtime context. Read more
Source§

fn set_bootstrap_provider<'life0, 'async_trait>( &'life0 self, provider: Box<dyn BootstrapProvider + 'static>, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Set the bootstrap provider for this source Read more
Source§

fn dispatch_mode(&self) -> DispatchMode

Get the dispatch mode for this source (Channel or Broadcast) Read more
Source§

fn describe_schema(&self) -> Option<SourceSchema>

Describe the graph schema this source provides, if known. Read more
Source§

fn remove_position_handle<'life0, 'life1, 'async_trait>( &'life0 self, _query_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Release the position handle that a query was holding on this source. Read more
Source§

fn on_subscriptions_complete<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Signal that the initial batch of query subscriptions is complete. Read more
Source§

fn set_identity_provider<'life0, 'async_trait>( &'life0 self, _provider: Arc<dyn IdentityProvider>, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Set the identity provider for this source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more