1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
use std::any::Any;
use crate::common::thread::thread_service_std::ServiceThreadStd;
pub mod thread_service_std;
pub mod thread_service_tokio;
pub trait ServiceThread {
fn start(&mut self);
fn shutdown(&mut self);
fn make_stop(&mut self);
fn wakeup(&mut self);
fn wait_for_running(&mut self, interval: i64);
fn is_stopped(&self) -> bool;
fn get_service_name(&self) -> String;
}
pub trait Runnable: Send + Sync + 'static {
fn run(&mut self) {}
}
#[trait_variant::make(TokioRunnable: Send)]
pub trait RocketMQTokioRunnable: Sync + 'static {
async fn run(&mut self);
}