From 8247be32f9db95be642747635642ea51762ae2ba Mon Sep 17 00:00:00 2001 From: Andrea Fioraldi Date: Sat, 21 Nov 2020 14:37:38 +0100 Subject: [PATCH] simple logger event manager --- src/events/mod.rs | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/src/events/mod.rs b/src/events/mod.rs index 4e6ae2ad41..ba0d5af3d0 100644 --- a/src/events/mod.rs +++ b/src/events/mod.rs @@ -1,14 +1,14 @@ -use core::any::TypeId; -use core::fmt::Debug; +use core::any::{Any, TypeId}; +use core::fmt::Display; use crate::AflError; -pub trait Event: Debug {} +pub trait Event: Display + Any {} pub trait EventManager { /// Check if this EventaManager support a given Event type fn enabled(&self) -> bool; - /* fn enabled() -> bool { + /* fn enabled(&self) -> bool { match TypeId::of::() { TypeId::of::() => true, _ => false, @@ -59,3 +59,32 @@ pub fn my_event_test(manager: &mut M) { fire_event!(manager, MyEvent).unwrap(); } */ + +pub struct NewTestcaseEvent {} +impl Event for NewTestcaseEvent {} +impl Display for NewTestcaseEvent { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + write!(f, "[NewTestcase] idx: ") + } +} + +pub struct LoggerEventManager {} + +impl EventManager for LoggerEventManager { + fn enabled(&self) -> bool { + let _new_testcase = TypeId::of::(); + match TypeId::of::() { + _new_testcase => true, + //_ => false, + } + } + + fn fire(&mut self, event: E) -> Result<(), AflError> { + println!("{}", event); + Ok(()) + } + + fn lookup(&mut self) -> Result { + Ok(0) + } +}