This commit is contained in:
2023-07-25 11:43:33 +02:00
parent 5b973d2b64
commit b5f477678a

View File

@@ -73,16 +73,22 @@ struct ServerState {
pub struct BotsManager { pub struct BotsManager {
port: u16, port: u16,
stop_data: (StopToken, StopFlag),
stop_token: StopToken,
stop_flag: StopFlag,
state: ServerState state: ServerState
} }
impl BotsManager { impl BotsManager {
pub fn create() -> Self { pub fn create() -> Self {
let (stop_token, stop_flag) = mk_stop_token();
BotsManager { BotsManager {
port: 8000, port: 8000,
stop_data: mk_stop_token(),
stop_token,
stop_flag,
state: ServerState { state: ServerState {
routers: Arc::new(RwLock::new(HashMap::new())) routers: Arc::new(RwLock::new(HashMap::new()))
@@ -96,7 +102,7 @@ impl BotsManager {
let stream = UnboundedReceiverStream::new(rx); let stream = UnboundedReceiverStream::new(rx);
let listener = StatefulListener::new( let listener = StatefulListener::new(
(stream, self.stop_data.0.clone()), (stream, self.stop_token.clone()),
tuple_first_mut, tuple_first_mut,
|state: &mut (_, StopToken)| { |state: &mut (_, StopToken)| {
state.1.clone() state.1.clone()
@@ -238,21 +244,20 @@ impl BotsManager {
StatusCode::OK StatusCode::OK
} }
let stop_token = self.stop_data.0.clone(); let stop_token = self.stop_token.clone();
let stop_flag = self.stop_data.1.clone(); let stop_flag = self.stop_flag.clone();
let state = self.state.clone();
let port = self.port; let port = self.port;
let router = axum::Router::new()
.route("/:token/", post(telegram_request))
.layer(TraceLayer::new_for_http())
.with_state(self.state.clone());
tokio::spawn(async move { tokio::spawn(async move {
log::info!("Start webserver..."); log::info!("Start webserver...");
let addr = SocketAddr::from(([0, 0, 0, 0], port)); let addr = SocketAddr::from(([0, 0, 0, 0], port));
let router = axum::Router::new()
.route("/:token/", post(telegram_request))
.layer(TraceLayer::new_for_http())
.with_state(state);
axum::Server::bind(&addr) axum::Server::bind(&addr)
.serve(router.into_make_service()) .serve(router.into_make_service())
.with_graceful_shutdown(stop_flag) .with_graceful_shutdown(stop_flag)
@@ -276,10 +281,11 @@ impl BotsManager {
loop { loop {
if !running.load(Ordering::SeqCst) { if !running.load(Ordering::SeqCst) {
manager.stop_data.0.stop(); manager.stop_token.stop();
return;
}; };
if manager.stop_data.1.is_stopped() { if manager.stop_flag.is_stopped() {
return; return;
} }