33 lines
810 B
Go
33 lines
810 B
Go
|
package journal
|
||
|
|
||
|
// Attr represents a key/value pair ("attribute"), several of which comprise a
|
||
|
// journal entry.
|
||
|
type Attr struct {
|
||
|
Key AttrKey
|
||
|
Value []byte
|
||
|
}
|
||
|
|
||
|
// UseTextProto returns true if we can use the text protocol to encode the
|
||
|
// message on the wire. It is heuristic; it will only consider messages of
|
||
|
// ≤ 128 bytes. Following guidance at https://systemd.io/JOURNAL_NATIVE_PROTOCOL/
|
||
|
// it is intended to make for nice strace(1) traces.
|
||
|
func (a Attr) UseTextProto() bool {
|
||
|
if len(a.Value) > 128 {
|
||
|
return false
|
||
|
}
|
||
|
for _, b := range a.Value {
|
||
|
if b < 32 || b > 0xFE {
|
||
|
return false
|
||
|
}
|
||
|
}
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
// StringAttr captures the common paradigm of building an Attr from a string.
|
||
|
func StringAttr(key AttrKey, value string) Attr {
|
||
|
return Attr{
|
||
|
Key: key,
|
||
|
Value: []byte(value),
|
||
|
}
|
||
|
}
|