socket-api feature: make the daemon core embeddable in-process
Gate the unix-socket server, systemd activation, and the socket-serving run() behind a new default socket-api feature, with required-features on the binary. The core modules (daemon, store, transfer, discovery, meta) stay feature-free, so platforms without a daemon model (iOS — redoal ADR-0012) can embed Daemon directly via cargo check -p varde-daemon --no-default-features. Also cfg-gate the abstract-socket branch of sd_notify to Linux: abstract socket names don't exist elsewhere, and this was the one spot keeping varde-daemon from compiling on macOS at all. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -9,16 +9,19 @@ pub mod discovery;
|
||||
pub mod dscp;
|
||||
pub mod meta;
|
||||
pub mod metered;
|
||||
#[cfg(feature = "socket-api")]
|
||||
pub mod server;
|
||||
pub mod shaped;
|
||||
pub mod store;
|
||||
pub mod transfer;
|
||||
|
||||
#[cfg(feature = "socket-api")]
|
||||
use anyhow::Result;
|
||||
|
||||
/// Run a daemon with the given config until the future is dropped or the
|
||||
/// listener fails. The socket is bound before the accept loop starts, so
|
||||
/// once this future has been polled the socket path exists.
|
||||
#[cfg(feature = "socket-api")]
|
||||
pub async fn run(config: config::Config) -> Result<()> {
|
||||
let socket_path = config.socket_path.clone();
|
||||
let daemon = daemon::Daemon::open(config).await?;
|
||||
|
||||
Reference in New Issue
Block a user