1# line-protocol
2
3This is an encoder for the influx [line protocol.](https://docs.influxdata.com/influxdb/latest/reference/syntax/line-protocol/)
4
5It has an interface similar to the standard library's `json.Encoder`.
6
7
8### some caveats.
9- It is not concurrency-safe.  If you want to make multiple calls to `Encoder.Encode` concurrently you have to manage the concurrency yourself.
10- It can only encode values that are uint64, int64, int, float32, float64, string, or bool.
11- Ints are converted to int64, float32's to float64.
12- If UintSupport is not set, uint64s are converted to int64's and if they are larger than the max int64, they get truncated to the max int64 instead of overflowing.
13
14
15### Example:
16```go
17buf := &bytes.Buffer{}
18serializer := protocol.NewEncoder(buf)
19serializer.SetMaxLineBytes(1024)
20serializer.SetFieldTypeSupport(UintSupport)
21serializer.Encode(e) // where e is something that implements the protocol.Metric interface
22```
23