use std::time::Duration as StdDuration;
use harn_vm::{ConnectorRegistry, RetryPolicy, TenantScope, TriggerRetryConfig};
use super::{DEFAULT_CLAIM_TTL, DEFAULT_SHUTDOWN_DRAIN};
pub struct WorkerServeOptions {
pub consumer_id: Option<String>,
pub claim_ttl: StdDuration,
pub drain_timeout: StdDuration,
pub connector_registry: Option<ConnectorRegistry>,
pub tenant_scope: Option<TenantScope>,
}
impl Default for WorkerServeOptions {
fn default() -> Self {
Self {
consumer_id: None,
claim_ttl: DEFAULT_CLAIM_TTL,
drain_timeout: DEFAULT_SHUTDOWN_DRAIN,
connector_registry: None,
tenant_scope: None,
}
}
}
#[derive(Default)]
pub struct JobRunOptions {
pub retry_override: Option<TriggerRetryConfig>,
pub connector_registry: Option<ConnectorRegistry>,
pub tenant_scope: Option<TenantScope>,
}
impl JobRunOptions {
pub fn with_retry(mut self, retry: TriggerRetryConfig) -> Self {
self.retry_override = Some(retry);
self
}
pub fn fail_fast() -> Self {
Self {
retry_override: Some(TriggerRetryConfig::new(
1,
RetryPolicy::Linear { delay_ms: 0 },
)),
connector_registry: None,
tenant_scope: None,
}
}
pub fn with_connector_registry(mut self, registry: ConnectorRegistry) -> Self {
self.connector_registry = Some(registry);
self
}
pub fn with_tenant_scope(mut self, scope: TenantScope) -> Self {
self.tenant_scope = Some(scope);
self
}
}