fn handle_message()

in src/flowgger/splitter/capnp_splitter.rs [130:165]


fn handle_message(message: record_capnp::record::Reader) -> Result<Record, &'static str> {
    let ts = message.get_ts();
    if ts.is_nan() || ts <= 0.0 {
        return Err("Missing timestamp");
    }
    let hostname = message
        .get_hostname()
        .and_then(|x| Ok(x.to_owned()))
        .or(Err("Missing host name"))?;
    let facility = match message.get_facility() {
        facility if facility <= FACILITY_MAX => Some(facility),
        _ => None,
    };
    let severity = match message.get_severity() {
        severity if severity <= SEVERITY_MAX => Some(severity),
        _ => None,
    };
    let appname = message.get_appname().and_then(|x| Ok(x.to_owned())).ok();
    let procid = message.get_procid().and_then(|x| Ok(x.to_owned())).ok();
    let msgid = message.get_msgid().and_then(|x| Ok(x.to_owned())).ok();
    let msg = message.get_msg().and_then(|x| Ok(x.to_owned())).ok();
    let full_msg = message.get_full_msg().and_then(|x| Ok(x.to_owned())).ok();
    let sd = get_sd(message)?;
    Ok(Record {
        ts,
        hostname,
        facility,
        severity,
        appname,
        procid,
        msgid,
        msg,
        full_msg,
        sd,
    })
}