mirror of
https://github.com/flibusta-apps/book_bot.git
synced 2025-12-06 15:35:35 +01:00
Fix
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user