pub struct SdCppEngine { /* private fields */ }Expand description
Worker-side engine that drives sd-cli per job.
sd-cli is resolved lazily on the first image job and cached: an
operator install (env / PATH / ~/.local/bin) wins, otherwise the
binary is auto-provisioned into <models_root>/bin/. The Mutex
serialises that one-time resolution so two concurrent jobs can’t
race the download.
Implementations§
Source§impl SdCppEngine
impl SdCppEngine
Sourcepub fn new(models_root: &Path) -> Self
pub fn new(models_root: &Path) -> Self
Build the engine. Always registers: sd-cli is resolved (and
provisioned into <models_root>/bin/ if missing) lazily on the
first image job, so the engine serves real image work even on a
box that has never had a stable-diffusion.cpp build installed.
models_root is created on demand by the provisioner / model
downloader, so registration touches no filesystem.
Trait Implementations§
Source§impl Engine for SdCppEngine
impl Engine for SdCppEngine
fn name(&self) -> &'static str
fn capabilities(&self) -> EngineCapabilities
fn dispatch(&self, _model: &str, _task: Task) -> Result<TaskResult>
Source§fn dispatch_with_source(
&self,
model: &str,
task: Task,
source: &ModelSource,
) -> Result<TaskResult>
fn dispatch_with_source( &self, model: &str, task: Task, source: &ModelSource, ) -> Result<TaskResult>
Dispatch with the studio’s
ModelSource attached. Engines
that need it (download URLs / CLI defaults) override this;
engines that don’t (synthetic) keep using the plain
dispatch method via the default impl below.Auto Trait Implementations§
impl !Freeze for SdCppEngine
impl !RefUnwindSafe for SdCppEngine
impl Send for SdCppEngine
impl Sync for SdCppEngine
impl Unpin for SdCppEngine
impl UnsafeUnpin for SdCppEngine
impl UnwindSafe for SdCppEngine
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.