#[cfg(feature = "subscription-kafka")]
use super::{RunCx, ServeCx};
use crate::capability::Capability;
#[cfg(feature = "subscription-kafka")]
use crate::capability::Started;
#[derive(Debug)]
pub struct SubscriptionKafka;
#[async_trait::async_trait]
impl Capability for SubscriptionKafka {
#[cfg(feature = "subscription-kafka")]
fn configured(&self, cx: &ServeCx<'_>) -> bool {
cx.server.subscription_kafka.is_some()
}
#[cfg(feature = "subscription-kafka")]
async fn start(&self, cx: &mut RunCx<'_>) -> crate::Result<Started> {
let server = &mut *cx.server;
if let Some(mirror) = server.subscription_kafka.take() {
crate::subscription_kafka::spawn(
mirror,
&server.subscription_manager,
&mut server.tasks,
);
}
Ok(Started::Running)
}
}