import "go.chromium.org/luci/logdog/client/butlerlib/streamproto"
Package streamproto describes the protocol primitives used by LogDog/Butler for stream negotiation.
A LogDog Butler client wishing to create a new LogDog stream can use the Flags type to configure/send the stream.
Internally, LogDog represents the Flags properties with the Properties type.
doc.go magic.go properties.go streamName.go streamType.go tag.go
var ( // ProtocolFrameHeaderMagic is the number at the beginning of streams that // identifies the stream handshake version. // // This serves two purposes: // - To disambiguate a Butler stream from some happenstance string of bytes // (which probably won't start with these characters). // - To allow an upgrade to the wire format, if one is ever needed. e.g., // a switch to something other than recordio/JSON. ProtocolFrameHeaderMagic = []byte("BTLR1\x1E") )
var ( // StreamTypeFlagEnum maps configuration strings to their underlying StreamTypes. StreamTypeFlagEnum = flagenum.Enum{ "text": StreamType(logpb.StreamType_TEXT), "binary": StreamType(logpb.StreamType_BINARY), "datagram": StreamType(logpb.StreamType_DATAGRAM), } )
LocalNamedPipePath returns the path to a local Windows named pipe named `base`. This is used with the 'net.pipe' butler protocol.
type Flags struct { Name StreamNameFlag `json:"name,omitempty"` ContentType string `json:"contentType,omitempty"` Type StreamType `json:"type,omitempty"` Timestamp clockflag.Time `json:"timestamp,omitempty"` Tags TagMap `json:"tags,omitempty"` }
Flags is a flag- and JSON-compatible version of logpb.LogStreamDescriptor. It is used for stream negotiation protocol and command-line interfaces.
TODO(iannucci) - Change client->butler protocol to just use jsonpb encoding of LogStreamDescriptor.
func (f *Flags) Descriptor() *logpb.LogStreamDescriptor
Descriptor converts the Flags to a LogStreamDescriptor.
FromHandshake reads the butler protocol header handshake from the given Reader.
WriteHandshake writes the butler protocol header handshake on the given Writer.
type StreamNameFlag types.StreamName
StreamNameFlag is a flag and JSON-compatible type that converts to/from a types.StreamName. StreamName validation is part of the conversion.
func (f StreamNameFlag) MarshalJSON() ([]byte, error)
MarshalJSON implements json.Marshaler.
func (f *StreamNameFlag) Set(v string) error
Set implements flag.Value.
func (f *StreamNameFlag) String() string
String implements flag.Value.
func (f *StreamNameFlag) UnmarshalJSON(data []byte) error
UnmarshalJSON implements json.Unmarshaler.
type StreamType logpb.StreamType
StreamType is a flag- and JSON-compatible wrapper around the StreamType protobuf field.
func (t StreamType) DefaultContentType() types.ContentType
DefaultContentType returns the default ContentType for a given stream type.
func (t StreamType) MarshalJSON() ([]byte, error)
MarshalJSON implements json.Marshaler.
func (t *StreamType) Set(v string) error
Set implements flag.Value.
func (t *StreamType) String() string
String implements flag.Value.
func (t *StreamType) UnmarshalJSON(data []byte) error
UnmarshalJSON implements json.Unmarshaler.
type TagMap stringmapflag.Value
TagMap is a flags-compatible map used to store stream tags.
MarshalJSON implements the json.Marshaler interface.
Set implements flag.Value
SortedKeys returns a sorted slice of the keys in a TagMap.
String implements flag.Value.
UnmarshalJSON implements the json.Unmarshaler interface.
Package streamproto imports 14 packages (graph) and is imported by 17 packages. Updated 2020-10-27. Refresh now. Tools for package owners.