use alloc::vec::Vec;
use serde::{Deserialize, Serialize};
use crate::observers::concolic::{serialization_format::MessageFileReader, SymExpr, SymExprRef};
#[derive(Default, Serialize, Deserialize, Debug)]
#[allow(clippy::unsafe_derive_deserialize)]
pub struct ConcolicMetadata {
buffer: Vec<u8>,
}
impl ConcolicMetadata {
pub fn iter_messages(&self) -> impl Iterator<Item = (SymExprRef, SymExpr)> + '_ {
let mut parser = MessageFileReader::from_buffer(&self.buffer);
std::iter::from_fn(move || parser.next_message()).flatten()
}
pub(crate) fn from_buffer(buffer: Vec<u8>) -> Self {
Self { buffer }
}
}
libafl_bolts::impl_serdeany!(ConcolicMetadata);