Added decent logging for event processing.

This commit is contained in:
didier amyot committed 2023-03-10 10:09:34 -05:00
1 parent 462ceb6ba6
commit c365289914
6 files changed
+256 -25

No files matched your search

+16 -8
View File
@@ -8,16 +8,19 @@ use actix_web::{
web, App, FromRequest, HttpResponse, HttpServer, Responder, Result, Scope,
};
use crate::event_processor::process_event;
use async_channel;
use futures::{pin_mut, select, FutureExt};
use minijinja;
use minijinja_autoreload::AutoReloader;
use rusqlite::Connection;
use uuid::Uuid;
use crate::events::Event;
use crate::util::{CustomResult, Error, SQLiteConnectionFactory};
use crate::webui::services::{creat_db_pool, Services};
use crate::webui::templates::MiniJinjaRenderer;
use crate::webui::worker::event_processor_loop;
use crate::webui::worker::{event_processor_loop, EventProcessor};
mod index_views;
mod services;
@@ -25,6 +28,14 @@ mod templates;
mod views;
mod worker;
struct ProductionEventProcessor;
impl EventProcessor for ProductionEventProcessor {
fn process_event(&self, conn: &mut Connection, event: Event) -> CustomResult<()> {
process_event(conn, event)
}
}
fn create_auto_reloader(enable_template_autoreload: bool) -> AutoReloader {
AutoReloader::new(move |notifier| {
let mut env: minijinja::Environment<'static> = minijinja::Environment::new();
@@ -67,12 +78,7 @@ pub async fn web_ui_main(
port: u16,
enable_template_autoreload: bool,
) -> CustomResult<()> {
let (event_sender, event_receiver) = async_channel::unbounded::<Event>();
// use r2d2 for connection pools (https://github.com/sfackler/r2d2 &
// https://github.com/ivanceras/r2d2-sqlite) use
// https://docs.rs/actix-web/4.3.1/actix_web/web/fn.block.html
// in handlers.
let (event_sender, event_receiver) = async_channel::unbounded::<(Uuid, Event)>();
let pool = creat_db_pool(&conn_fact.path().unwrap());
let services = Services::new(pool);
@@ -93,7 +99,9 @@ pub async fn web_ui_main(
.unwrap();
let t1 = server.run().fuse();
let t2 = event_processor_loop(conn_fact, event_receiver).fuse();
let mut conn = conn_fact.connection().unwrap();
let t2 = event_processor_loop(&mut conn, &ProductionEventProcessor {}, event_receiver).fuse();
pin_mut!(t1, t2);
select! {