Crate influxdb_line_protocol

Source
Expand description

This crate contains pure Rust implementations of

  1. A parser for InfluxDB Line Protocol developed as part of the InfluxDB IOx project. This implementation is intended to be compatible with the Go implementation, however, this implementation uses a nom combinator-based parser rather than attempting to port the imperative Go logic so there are likely some small differences.

  2. A builder to construct valid InfluxDB Line Protocol

§Example

Here is an example of how to parse the following line protocol data into a ParsedLine:

cpu,host=A,region=west usage_system=64.2 1590488773254420000
use influxdb_line_protocol::{ParsedLine, FieldValue};

let mut parsed_lines =
    influxdb_line_protocol::parse_lines(
        "cpu,host=A,region=west usage_system=64i 1590488773254420000"
    );
let parsed_line = parsed_lines
    .next()
    .expect("Should have at least one line")
    .expect("Should parse successfully");

let ParsedLine {
    series,
    field_set,
    timestamp,
} = parsed_line;

assert_eq!(series.measurement, "cpu");

let tags = series.tag_set.unwrap();
assert_eq!(tags[0].0, "host");
assert_eq!(tags[0].1, "A");
assert_eq!(tags[1].0, "region");
assert_eq!(tags[1].1, "west");

let field = &field_set[0];
assert_eq!(field.0, "usage_system");
assert_eq!(field.1, FieldValue::I64(64));

assert_eq!(timestamp, Some(1590488773254420000));

Re-exports§

pub use builder::LineProtocolBuilder;

Modules§

builder
Typestate line protocol builder.

Structs§

ParsedLine
Represents a single parsed line of line protocol data. See the crate-level documentation for more information and examples.
Series
Represents the identifier of a series (measurement, tagset) for line protocol data

Enums§

Error
Parsing errors that describe how a particular line is invalid line protocol.
EscapedStr
Represents a single logical string in the input.
FieldValue
Allowed types of fields in a ParsedLine. One of the types described in the line protocol reference.

Functions§

parse_lines
Parses a new line-delimited string into an iterator of ParsedLine. See the crate-level documentation for more information and examples.
split_lines
Split input into individual lines to be parsed, based on the rules of the line protocol format.

Type Aliases§

FieldSet
The field keys and values that appear in the line of line protocol.
Measurement
Result
A specialized Result type with a default error type of Error.
TagSet
The tag keys and values that appear in the line of line protocol.