Skip to main content

PhotonBuilder

Struct PhotonBuilder 

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

Builder for constructing Photon runtimes.

Wire a StoragePort (or accept the default in-process port), optionally install inventory discovery and ops telemetry, then build. Keep the returned Photon handle for publish_on / subscribe_on.

ModeTypical wiring
Mode 1 — EmbeddedDefault builder, or storage_port with SQLite
Mode 2 — Brokeredstorage_port with NATS/Kafka/Fluvio on every binary

Getting started: Mode 1, Mode 2.

§Examples

Default mem path (loads PHOTON_TRANSPORT_KEY via TransportCrypto::from_env):

use photon_runtime::Photon;

let _photon = Photon::builder().auto_registry().build()?;

Explicit storage port:

use std::sync::Arc;

use photon_backend::{InProcStoragePort, StoragePort, TransportCrypto};
use photon_runtime::Photon;

let port: Arc<dyn StoragePort> = Arc::new(InProcStoragePort::new(
    TransportCrypto::from_env()?,
));
let _photon = Photon::builder().storage_port(port).auto_registry().build()?;

Implementations§

Source§

impl PhotonBuilder

Source

pub fn storage_port(self, port: Arc<dyn StoragePort>) -> Self

Explicit storage port (defaults to in-process mem via InProcStoragePort).

Use this for SQLite (Mode 1 durable) and for broker adapters (Mode 2 — same port config on publisher and worker). See Getting started → Mode 2.

§Example
use std::sync::Arc;

use photon_backend::{InProcStoragePort, StoragePort, TransportCrypto};
use photon_runtime::Photon;

let port: Arc<dyn StoragePort> = Arc::new(InProcStoragePort::new(
    TransportCrypto::from_env()?,
));
let _photon = Photon::builder().storage_port(port).auto_registry().build()?;
Source

pub fn backend(self, backend: Arc<dyn PhotonBackend>) -> Self

Pre-built backend instance.

Prefer storage_port for normal hosts. Use this when you already constructed a PhotonBackend (tests, custom delivery stacks).

§Errors

build returns an error if both this and backend_with_context are set.

Source

pub fn backend_with_context<F>(self, install: F) -> Self
where F: FnOnce(BackendContext) -> Result<Arc<dyn PhotonBackend>> + Send + 'static,

Build backend from shared BackendContext (custom install closures).

Prefer storage_port for adapter wiring. This is for hosts that install a custom PhotonBackend from the registry context.

§Example
use std::sync::Arc;

use photon_backend::{BackendContext, EmbeddedBackend};
use photon_runtime::Photon;

let _photon = Photon::builder()
    .backend_with_context(|ctx: BackendContext| EmbeddedBackend::install_mem(ctx))
    .auto_registry()
    .build()?;
Source

pub fn mem_backend(self) -> Self

Shorthand for backend_with_context with EmbeddedBackend::install_mem.

Equivalent to the default path when you also omit storage_port (in-process mem). Prefer the default build unless you need an explicit install fn.

§Example
use photon_runtime::Photon;

let _photon = Photon::builder().mem_backend().auto_registry().build()?;
Source

pub fn ops_log(self, log: impl OpsLog + 'static) -> Self

Install a concrete OpsLog adapter before build.

Runnable: cargo run -p uf-photon --example telemetry_ops_log --features runtime,mem.

§Example
use photon_runtime::Photon;
use photon_telemetry::ConsoleOpsLog;

let _photon = Photon::builder()
    .ops_log(ConsoleOpsLog)
    .auto_registry()
    .build()?;
Source

pub fn ops_log_arc(self, log: Arc<dyn OpsLog>) -> Self

Install a shared OpsLog trait object before build.

Source

pub const fn auto_registry(self) -> Self

Discover #[photon::topic] / #[photon::subscribe] descriptors via Quark inventory.

Required when using the macros in the same crate graph as the host. Without this, the topic registry stays empty and the executor has nothing to dispatch.

Runnable: cargo run -p uf-photon --example embedded_mem --features runtime,mem.

Source

pub fn retention_policy(self, policy: RetentionPolicy) -> Self

Override default retention policy (env fallbacks apply for unset fields).

Source

pub fn retention_hook(self, hook: Arc<dyn RetentionHook>) -> Self

Host hook for extra subscriptions and legal-hold floors.

Source

pub fn build(self) -> Result<Photon>

Assemble the Photon runtime.

§Defaults
§Errors

Returns an error if transport crypto cannot load from the environment, a custom install fn fails, or both backend and backend_with_context were set.

Trait Implementations§

Source§

impl Default for PhotonBuilder

Source§

fn default() -> PhotonBuilder

Returns the “default value” for a type. 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<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> 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<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