Documentation
¶
Overview ¶
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 ¶
Constants ¶
This section is empty.
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), } )
Functions ¶
This section is empty.
Types ¶
type Flags ¶
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"`
BinaryFileExtension string `json:"binaryFileExtension,omitempty"`
IOKeepAlive bool `json:"ioKeepAlive,omitempty"`
Tee TeeType `json:"tee,omitempty"`
Timeout clockflag.Duration `json:"timeout,omitempty"`
Deadline clockflag.Duration `json:"deadline,omitempty"`
}
Flags is a flag- and JSON-compatible collapse of Properties. It is used for stream negotiation protocol and command-line interfaces.
func (*Flags) Properties ¶
func (f *Flags) Properties() *Properties
Properties converts the Flags to a standard Properties structure.
If the values are not valid, this conversion will return an error.
type Properties ¶
type Properties struct {
// The log stream's descriptor.
//
// Note that the Prefix value, if filled, will be overridden by the Butler's
// Prefix.
*logpb.LogStreamDescriptor
// Tee is the tee configuration for this stream. If empty, the stream will
// not be tee'd.
Tee TeeType
// Timeout, if specified, is the stream timeout. If a read happens without
// filling the buffer, it will prematurely return after this period.
Timeout time.Duration
// Deadline, if set, specifies the maximum amount of time that data from this
// Stream can be buffered before being sent to its Output.
//
// Note that this value is best-effort, as it is subject to the constraints
// of the underlying transport medium.
Deadline time.Duration
}
Properties is the set of properties needed to define a LogDog Butler Stream.
func (*Properties) Clone ¶
func (p *Properties) Clone() *Properties
Clone returns a fully-independent clone of this Properties object.
func (*Properties) Validate ¶
func (p *Properties) Validate() error
Validate validates that the configured Properties are valid and sufficient to create a Butler stream.
It skips stream Prefix validation and instead asserts that it is empty, as it should not be populated when Properties are defined.
type StreamNameFlag ¶
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 ¶
func (f StreamNameFlag) MarshalJSON() ([]byte, error)
MarshalJSON implements json.Marshaler.
func (*StreamNameFlag) Set ¶
func (f *StreamNameFlag) Set(v string) error
Set implements flag.Value.
func (*StreamNameFlag) String ¶
func (f *StreamNameFlag) String() string
String implements flag.Value.
func (*StreamNameFlag) UnmarshalJSON ¶
func (f *StreamNameFlag) UnmarshalJSON(data []byte) error
UnmarshalJSON implements json.Unmarshaler.
type StreamType ¶
type StreamType logpb.StreamType
StreamType is a flag- and JSON-compatible wrapper around the StreamType protobuf field.
func (StreamType) DefaultContentType ¶
func (t StreamType) DefaultContentType() types.ContentType
DefaultContentType returns the default ContentType for a given stream type.
func (StreamType) MarshalJSON ¶
func (t StreamType) MarshalJSON() ([]byte, error)
MarshalJSON implements json.Marshaler.
func (*StreamType) UnmarshalJSON ¶
func (t *StreamType) UnmarshalJSON(data []byte) error
UnmarshalJSON implements json.Unmarshaler.
type TagMap ¶
type TagMap stringmapflag.Value
TagMap is a flags-compatible map used to store stream tags.
func (*TagMap) MarshalJSON ¶
MarshalJSON implements the json.Marshaler interface.
func (TagMap) SortedKeys ¶
SortedKeys returns a sorted slice of the keys in a TagMap.
Source Files
¶
- doc.go
- magic.go
- properties.go
- streamName.go
- streamType.go
- tag.go
- tee.go