pub trait SourcePlugin:
Send
+ Sync
+ 'static {
// Required methods
fn kind(&self) -> &'static str;
fn config_schema(&self) -> Schema;
fn build(
&self,
name: &SourceName,
config: &Value,
secrets: &dyn SecretResolver,
) -> Result<Box<dyn TaskSource>, SourceError>;
// Provided methods
fn build_with_clock(
&self,
name: &SourceName,
config: &Value,
secrets: &dyn SecretResolver,
clock: SharedClock,
) -> Result<Box<dyn TaskSource>, SourceError> { ... }
fn document_relative_paths(&self) -> &'static [&'static str] { ... }
}Expand description
The factory that turns one configuration block into a live TaskSource.
Having the compile-time registry and the subprocess seam be the same shape is the whole reason this is a trait rather than a free function.
Required Methods§
Sourcefn config_schema(&self) -> Schema
fn config_schema(&self) -> Schema
The JSON Schema for this plugin’s own config: block.
Sourcefn build(
&self,
name: &SourceName,
config: &Value,
secrets: &dyn SecretResolver,
) -> Result<Box<dyn TaskSource>, SourceError>
fn build( &self, name: &SourceName, config: &Value, secrets: &dyn SecretResolver, ) -> Result<Box<dyn TaskSource>, SourceError>
Build a live source from one configuration block.
name is the configured source’s name, for error messages only — a
plugin never learns it for any other purpose.
§Errors
Returns SourceError::Config when config is not valid for this
plugin, or SourceError::Auth when a named credential is absent.
Provided Methods§
Sourcefn build_with_clock(
&self,
name: &SourceName,
config: &Value,
secrets: &dyn SecretResolver,
clock: SharedClock,
) -> Result<Box<dyn TaskSource>, SourceError>
fn build_with_clock( &self, name: &SourceName, config: &Value, secrets: &dyn SecretResolver, clock: SharedClock, ) -> Result<Box<dyn TaskSource>, SourceError>
Build a live source from one configuration block, handing it the clock it paces and backs off on.
The binary builds every in-process source through this, with the process’s one
SharedClock — system_clock unless a test asked for
simulated time. Defaulted to build, which ignores the clock: a plugin
that never waits needs no edit, and one that does overrides this and routes its waits
through clock.
§Errors
As build.
Sourcefn document_relative_paths(&self) -> &'static [&'static str]
fn document_relative_paths(&self) -> &'static [&'static str]
The fields of this plugin’s config: block that name a filesystem path, as dotted
paths into that block.
A relative value at one of these, supplied by a configuration document, is
resolved against the directory holding that document before Self::build sees it;
supplied through the environment or a flag it keeps resolving against the process
working directory, because there is no document to rebase it on. A plugin is handed
values and no origins, so this declaration is the only way it can say which of its
own fields that rule reaches.
Defaulted to none, which is what keeps this an addition rather than a break: a plugin whose block holds no path needs no edit, and a caller asks every plugin rather than keeping a table of which ones answer.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".