model

package
v1.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 23, 2020 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// IntFields is a mask identifying the set of fields that can be viewed as integers,
	// and are viable targets for aggregation.
	IntFields = FieldSize
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ClientStream added in v1.5.0

type ClientStream Consumer

ClientStream is a view on a Consumer that consumes tcpassembly data from the client

func (*ClientStream) Reassembled added in v1.5.0

func (cs *ClientStream) Reassembled(rs []tcpassembly.Reassembly)

func (*ClientStream) ReassemblyComplete added in v1.5.0

func (cs *ClientStream) ReassemblyComplete()

type Consumer

type Consumer struct {
	// Handler receives events derived from the conversation.
	Handler EventHandler
	// ClientReader exposes data sent by the client to the server.
	ClientReader *reader.Reader
	// ServerReader exposes data send by the server to the client.
	ServerReader *reader.Reader

	Fsm Fsm
	// contains filtered or unexported fields
}

Consumer is a generic reader of a datastore conversation.

func New added in v1.5.0

func New(handler EventHandler, fsm Fsm) *Consumer

func (*Consumer) AddEvent

func (c *Consumer) AddEvent(evt Event)

func (*Consumer) ClientStream added in v1.5.0

func (c *Consumer) ClientStream() tcpassembly.Stream

func (*Consumer) Close added in v1.5.0

func (c *Consumer) Close()

func (*Consumer) FlushEvents

func (c *Consumer) FlushEvents()

func (*Consumer) ServerStream added in v1.5.0

func (c *Consumer) ServerStream() tcpassembly.Stream

type ConsumerSource

type ConsumerSource interface {
	Reader
	io.Closer
	tcpassembly.Stream
}

ConsumerSource buffers tcpassembly.Stream data and exposes it as a closeable Reader.

type DummySource added in v1.5.0

type DummySource struct{}

func (*DummySource) Close added in v1.5.0

func (s *DummySource) Close() error

func (*DummySource) Discard added in v1.5.0

func (s *DummySource) Discard(n int) (discarded int, err error)

func (*DummySource) IndexAny added in v1.5.0

func (s *DummySource) IndexAny(chars string) (int, error)

func (*DummySource) PeekN added in v1.5.0

func (s *DummySource) PeekN(n int) ([]byte, error)

func (*DummySource) Read added in v1.5.0

func (s *DummySource) Read(p []byte) (int, error)

func (*DummySource) ReadLine added in v1.5.0

func (s *DummySource) ReadLine() ([]byte, error)

func (*DummySource) ReadN added in v1.5.0

func (s *DummySource) ReadN(n int) ([]byte, error)

func (*DummySource) Reassembled added in v1.5.0

func (s *DummySource) Reassembled(rs []tcpassembly.Reassembly)

func (*DummySource) ReassemblyComplete added in v1.5.0

func (s *DummySource) ReassemblyComplete()

func (*DummySource) Reset added in v1.5.0

func (s *DummySource) Reset()

func (*DummySource) Truncate added in v1.5.0

func (s *DummySource) Truncate()

type Event

type Event struct {
	// Type of the event.
	Type EventType
	// Datastore key affected by this event.
	Key string
	// Size of the datastore value affected by this event.
	Size int
}

Event is a single event in a datastore conversation

type EventFieldMask added in v1.5.0

type EventFieldMask int

EventFieldMask efficiently identifies a field or set of fields in an Event. Each value is a power-of-2, and can be OR-ed together to express a set.

const (
	// FieldNone is a mask representing the empty set of Event fields.
	FieldNone EventFieldMask = 0
	FieldKey  EventFieldMask = 1 << iota
	FieldSize

	// FieldEndOfFields is a dummy value to use as the endpoint of an iteration.
	FieldEndOfFields
)

type EventHandler

type EventHandler func(evts []Event)

EventHandler consumes a batch of events.

type EventType

type EventType int

EventType described what sort of event has occurred.

const (
	// EventUnknown is an unhandled event.
	EventUnknown EventType = iota
	// EventGetHit is a successful data retrieval that returned data.
	EventGetHit
	// EventGetMiss is a data retrieval that did not result in data.
	EventGetMiss
)

type Fsm added in v1.5.0

type Fsm interface {
	SetConsumer(consumer *Consumer)
	Run()
}

Fsm is a finite-state machine that parses network traffic from a Consumer and produces events to that Consumer.

type ProtocolType added in v1.5.0

type ProtocolType uint8
const (
	ProtocolUnknown ProtocolType = iota
	ProtocolInfer
	ProtocolMemcacheText
	ProtocolRedis
)

func GetProtocolType added in v1.5.0

func GetProtocolType(protocol string) ProtocolType

type Reader

type Reader interface {
	// Discard skips the next n bytes, returning the number of bytes discarded.
	// If Discard skips fewer than n bytes, it also returns an error.
	Discard(n int) (discarded int, err error)

	// ReadN returns the next n bytes.
	//
	// If EOF is encountered before reading n bytes, the available bytes are returned
	// along with ErrUnexpectedEOF.
	//
	// The returned buffer is only valid until the next call to ReadN or ReadLine.
	ReadN(n int) ([]byte, error)

	// IndexAny returns the result of bytes.IndexAny invoked on the available buffer.
	// If the delimiters are not found and the stream is at its end, returns io.UnexpectedEOF.
	IndexAny(chars string) (int, error)

	// PeekN returns the next n bytes, not advancing the read cursor.
	//
	// If EOF is encountered before reading n bytes, the available bytes are returned
	// along with ErrUnexpectedEOF.
	//
	// The returned buffer is only valid until the next call to ReadN or ReadLine.
	PeekN(n int) ([]byte, error)

	// ReadLine returns a single line, not including the end-of-line bytes.
	// The returned buffer is only valid until the next call to ReadN or ReadLine.
	// ReadLine either returns a non-nil line or it returns an error, never both.
	//
	// The text returned from ReadLine does not include the line end ("\r\n" or "\n").
	// No indication or error is given if the input ends without a final line end.
	ReadLine() ([]byte, error)

	// Reset discards all state, preparing the Reader to receive data from a new connection.
	Reset()

	// Truncate discards all buffered data from the reader, leaving other state intact.
	Truncate()
}

Reader represents a subset of the bufio.Reader interface.

type ServerStream added in v1.5.0

type ServerStream Consumer

ServerStream is a view on a Consumer that consumes tcpassembly data from the server

func (*ServerStream) Reassembled added in v1.5.0

func (ss *ServerStream) Reassembled(rs []tcpassembly.Reassembly)

func (*ServerStream) ReassemblyComplete added in v1.5.0

func (ss *ServerStream) ReassemblyComplete()

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL