Added decent logging for event processing.
This commit is contained in:
1 parent
462ceb6ba6
commit
c365289914
6 files changed
+256
-25
No files matched your search
+16
-8
@@ -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! {
|
||||
|
||||
Reference in new issue
Block a user