Encodes Point structs into InfluxDB line protocol format.
Handles tag sorting, field type encoding, escaping, multi-point delimiters, and timestamp conversion.
Line Protocol Format
measurement[,tag_key=tag_val]... field_key=field_val[,field_key=field_val]... [timestamp]Field Type Encoding
- Integers: suffixed with
i(e.g.42i) - Floats: as-is (e.g.
0.64) - Strings: double-quoted (e.g.
"hello") - Booleans:
trueorfalse
Escaping Rules
- Measurement names: spaces, commas, backslashes
- Tag keys/values: spaces, commas, equals, backslashes
- Field keys: spaces, commas, equals, backslashes
- Field string values: double-quotes, backslashes
Summary
Functions
Encodes a Point or list of Points into InfluxDB line protocol binary.
Encodes a Point or list of Points into InfluxDB line protocol binary.
Types
Functions
@spec encode(InfluxElixir.Write.Point.t() | [InfluxElixir.Write.Point.t()]) :: encode_result()
Encodes a Point or list of Points into InfluxDB line protocol binary.
Returns {:ok, binary} on success or {:error, reason} on failure.
Examples
iex> point = InfluxElixir.Write.Point.new("cpu", %{"value" => 0.64})
iex> {:ok, lp} = InfluxElixir.Write.LineProtocol.encode(point)
iex> lp
"cpu value=0.64"
iex> point = InfluxElixir.Write.Point.new("cpu", %{"count" => 42},
...> tags: %{"host" => "server01"},
...> timestamp: 1_630_424_257_000_000_000
...> )
iex> {:ok, lp} = InfluxElixir.Write.LineProtocol.encode(point)
iex> lp
"cpu,host=server01 count=42i 1630424257000000000"
@spec encode!(InfluxElixir.Write.Point.t() | [InfluxElixir.Write.Point.t()]) :: binary()
Encodes a Point or list of Points into InfluxDB line protocol binary.
Raises ArgumentError on failure.
Examples
iex> point = InfluxElixir.Write.Point.new("cpu", %{"value" => 0.64})
iex> InfluxElixir.Write.LineProtocol.encode!(point)
"cpu value=0.64"