luci: go.chromium.org/luci/logdog/client/butlerlib/streamproto Index | Files

package streamproto

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.

Index

Package Files

doc.go magic.go properties.go streamName.go streamType.go tag.go

Variables

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),
    }
)

func LocalNamedPipePath Uses

func LocalNamedPipePath(base string) string

LocalNamedPipePath returns the path to a local Windows named pipe named `base`. This is used with the 'net.pipe' butler protocol.

type Flags Uses

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 (*Flags) Descriptor Uses

func (f *Flags) Descriptor() *logpb.LogStreamDescriptor

Descriptor converts the Flags to a LogStreamDescriptor.

func (*Flags) FromHandshake Uses

func (f *Flags) FromHandshake(r io.Reader) error

FromHandshake reads the butler protocol header handshake from the given Reader.

func (*Flags) WriteHandshake Uses

func (f *Flags) WriteHandshake(w io.Writer) error

WriteHandshake writes the butler protocol header handshake on the given Writer.

type StreamNameFlag Uses

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 (StreamNameFlag) MarshalJSON Uses

func (f StreamNameFlag) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*StreamNameFlag) Set Uses

func (f *StreamNameFlag) Set(v string) error

Set implements flag.Value.

func (*StreamNameFlag) String Uses

func (f *StreamNameFlag) String() string

String implements flag.Value.

func (*StreamNameFlag) UnmarshalJSON Uses

func (f *StreamNameFlag) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type StreamType Uses

type StreamType logpb.StreamType

StreamType is a flag- and JSON-compatible wrapper around the StreamType protobuf field.

func (StreamType) DefaultContentType Uses

func (t StreamType) DefaultContentType() types.ContentType

DefaultContentType returns the default ContentType for a given stream type.

func (StreamType) MarshalJSON Uses

func (t StreamType) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*StreamType) Set Uses

func (t *StreamType) Set(v string) error

Set implements flag.Value.

func (*StreamType) String Uses

func (t *StreamType) String() string

String implements flag.Value.

func (*StreamType) UnmarshalJSON Uses

func (t *StreamType) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

type TagMap Uses

type TagMap stringmapflag.Value

TagMap is a flags-compatible map used to store stream tags.

func (*TagMap) MarshalJSON Uses

func (t *TagMap) MarshalJSON() ([]byte, error)

MarshalJSON implements the json.Marshaler interface.

func (*TagMap) Set Uses

func (t *TagMap) Set(key string) error

Set implements flag.Value

func (TagMap) SortedKeys Uses

func (t TagMap) SortedKeys() []string

SortedKeys returns a sorted slice of the keys in a TagMap.

func (*TagMap) String Uses

func (t *TagMap) String() string

String implements flag.Value.

func (*TagMap) UnmarshalJSON Uses

func (t *TagMap) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the json.Unmarshaler interface.

Package streamproto imports 14 packages (graph) and is imported by 16 packages. Updated 2019-10-17. Refresh now. Tools for package owners.