fn get_pairs()

in src/flowgger/splitter/capnp_splitter.rs [65:113]


fn get_pairs(
    message_pairs: Option<capnp::struct_list::Reader<record_capnp::pair::Owned>>,
    message_extra: Option<capnp::struct_list::Reader<record_capnp::pair::Owned>>,
) -> Vec<(String, SDValue)> {
    let pairs_count = message_pairs
        .and_then(|x| Some(x.len()))
        .or(Some(0))
        .unwrap() as usize
        + message_extra
            .and_then(|x| Some(x.len()))
            .or(Some(0))
            .unwrap() as usize;
    let mut pairs = Vec::with_capacity(pairs_count);
    if let Some(message_pairs) = message_pairs {
        for message_pair in message_pairs.iter() {
            let name = match message_pair.get_key() {
                Ok(name) => {
                    if name.starts_with('_') {
                        name.to_owned()
                    } else {
                        format!("_{}", name)
                    }
                }
                _ => continue,
            };
            let value = match message_pair.get_value().which() {
                Ok(record_capnp::pair::value::String(Ok(x))) => SDValue::String(x.to_owned()),
                Ok(record_capnp::pair::value::Bool(x)) => SDValue::Bool(x),
                Ok(record_capnp::pair::value::F64(x)) => SDValue::F64(x),
                Ok(record_capnp::pair::value::I64(x)) => SDValue::I64(x),
                Ok(record_capnp::pair::value::U64(x)) => SDValue::U64(x),
                Ok(record_capnp::pair::value::Null(())) => SDValue::Null,
                _ => continue,
            };
            pairs.push((name, value));
        }
    }
    if let Some(message_extra) = message_extra {
        for message_pair in message_extra.iter() {
            match (message_pair.get_key(), message_pair.get_value().which()) {
                (Ok(name), Ok(record_capnp::pair::value::String(Ok(value)))) => {
                    pairs.push((name.to_owned(), SDValue::String(value.to_owned())))
                }
                _ => continue,
            }
        }
    }
    pairs
}