Как сбросить содержимое AppState в actix-web?
Где я могу очистить AppState в Actix Web? Конкретно мне нужно позвонить drop(tx)
на канале, когда система выключается, но я не уверен, где реализовать деструктор или какое сообщение актера прослушивать.
Я понимаю, что было бы лучше использовать актеров повсюду, но это то, с чем я должен работать прямо сейчас.
let (tx, rx) = channel();
HttpServer::new(move || {
let state = AppState {
channel: Arc::new(Mutex::new(tx.clone())),
};
App::with_state(state)
.middleware(middleware::Logger::default())
.resource("/ws/", |r| r.route().f(ws_route))
.resource("/", |r| r.f(index_html))
.handler("/", actix_web::fs::StaticFiles::new("./resources/public/").unwrap())
}).bind("0.0.0.0:9000")
.unwrap()
.start();
sys.run(); // Ctrl+C signal is caught here
for elt in rx {} // wait for tx to drop (it never does)