scylla_rs/app/node/
terminating.rs

1// Copyright 2021 IOTA Stiftung
2// SPDX-License-Identifier: Apache-2.0
3
4use super::*;
5
6#[async_trait::async_trait]
7impl Terminating<ClusterHandle> for Node {
8    async fn terminating(
9        &mut self,
10        status: Result<(), Need>,
11        supervisor: &mut Option<ClusterHandle>,
12    ) -> Result<(), Need> {
13        self.service.update_status(ServiceStatus::Stopping);
14        let event = ClusterEvent::Service(self.service.clone());
15        if let Some(supervisor) = supervisor.as_mut() {
16            supervisor.send(event).ok();
17            status
18        } else {
19            Err(Need::Abort)
20        }
21    }
22}