use ff_core::types::{LaneId, Namespace, WorkerId, WorkerInstanceId};
pub struct WorkerConfig {
pub host: String,
pub port: u16,
pub tls: bool,
pub cluster: bool,
pub worker_id: WorkerId,
pub worker_instance_id: WorkerInstanceId,
pub namespace: Namespace,
pub lanes: Vec<LaneId>,
pub capabilities: Vec<String>,
pub lease_ttl_ms: u64,
pub claim_poll_interval_ms: u64,
pub max_concurrent_tasks: usize,
}
impl WorkerConfig {
pub fn new(
host: impl Into<String>,
port: u16,
worker_id: impl Into<String>,
worker_instance_id: impl Into<String>,
namespace: impl Into<String>,
lane: impl Into<String>,
) -> Self {
Self {
host: host.into(),
port,
tls: false,
cluster: false,
worker_id: WorkerId::new(worker_id),
worker_instance_id: WorkerInstanceId::new(worker_instance_id),
namespace: Namespace::new(namespace),
lanes: vec![LaneId::new(lane)],
capabilities: Vec::new(),
lease_ttl_ms: 30_000,
claim_poll_interval_ms: 1_000,
max_concurrent_tasks: 1,
}
}
pub fn renewal_interval_ms(&self) -> u64 {
self.lease_ttl_ms / 3
}
}