frame

package
v0.1.12 Latest Latest
Warning

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

Go to latest
Published: Sep 26, 2022 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const HeaderSize = 9

HeaderSize specifies number of header bytes.

Variables

View Source
var Debug = true

Functions

func BufferWriter

func BufferWriter(b *Buffer) io.Writer

BufferWriter returns Buffer as io.Writer.

func CopyBuffer

func CopyBuffer(b *Buffer, w io.Writer) (n int64, err error)

CopyBuffer writes data to w until the buffer is drained or an error occurs.

Types

type Buffer

type Buffer struct {
	// contains filtered or unexported fields
}

func (*Buffer) Bytes

func (b *Buffer) Bytes() []byte

func (*Buffer) BytesBuffer

func (b *Buffer) BytesBuffer() *bytes.Buffer

func (*Buffer) Error

func (b *Buffer) Error() error

func (*Buffer) ReadByte

func (b *Buffer) ReadByte() Byte

func (*Buffer) ReadBytes

func (b *Buffer) ReadBytes() Bytes

func (*Buffer) ReadBytesMap

func (b *Buffer) ReadBytesMap() BytesMap

func (*Buffer) ReadColumnSpec

func (b *Buffer) ReadColumnSpec(f ResultFlags) ColumnSpec

func (*Buffer) ReadConsistency

func (b *Buffer) ReadConsistency() Consistency

func (*Buffer) ReadCustomOption

func (b *Buffer) ReadCustomOption() *CustomOption

func (*Buffer) ReadErrorCode

func (b *Buffer) ReadErrorCode() ErrorCode

func (*Buffer) ReadHeaderFlags

func (b *Buffer) ReadHeaderFlags() QueryFlags

func (*Buffer) ReadInet

func (b *Buffer) ReadInet() Inet

func (*Buffer) ReadInt

func (b *Buffer) ReadInt() Int

func (*Buffer) ReadListOption

func (b *Buffer) ReadListOption() *ListOption

func (*Buffer) ReadLong

func (b *Buffer) ReadLong() Long

func (*Buffer) ReadLongString

func (b *Buffer) ReadLongString() string

func (*Buffer) ReadMapOption

func (b *Buffer) ReadMapOption() *MapOption

func (*Buffer) ReadOpCode

func (b *Buffer) ReadOpCode() OpCode

func (*Buffer) ReadOption

func (b *Buffer) ReadOption() Option

func (*Buffer) ReadOptionList

func (b *Buffer) ReadOptionList() OptionList

func (*Buffer) ReadPreparedFlags

func (b *Buffer) ReadPreparedFlags() PreparedFlags

func (*Buffer) ReadPreparedMetadata

func (b *Buffer) ReadPreparedMetadata() PreparedMetadata

func (*Buffer) ReadQueryFlags

func (b *Buffer) ReadQueryFlags() QueryFlags

func (*Buffer) ReadResultFlags

func (b *Buffer) ReadResultFlags() ResultFlags

func (*Buffer) ReadResultMetadata

func (b *Buffer) ReadResultMetadata() ResultMetadata

func (*Buffer) ReadSchemaChangeTarget

func (b *Buffer) ReadSchemaChangeTarget() SchemaChangeTarget

allation is not required. It is done inside SchemaChange event.

func (*Buffer) ReadSchemaChangeType

func (b *Buffer) ReadSchemaChangeType() SchemaChangeType

func (*Buffer) ReadSetOption

func (b *Buffer) ReadSetOption() *SetOption

func (*Buffer) ReadShort

func (b *Buffer) ReadShort() Short

func (*Buffer) ReadShortBytes

func (b *Buffer) ReadShortBytes() ShortBytes

func (*Buffer) ReadStartupOptions

func (b *Buffer) ReadStartupOptions() StartupOptions

func (*Buffer) ReadStatusChangeType

func (b *Buffer) ReadStatusChangeType() StatusChangeType

func (*Buffer) ReadStreamID

func (b *Buffer) ReadStreamID() StreamID

func (*Buffer) ReadString

func (b *Buffer) ReadString() string

func (*Buffer) ReadStringList

func (b *Buffer) ReadStringList() StringList

func (*Buffer) ReadStringMap

func (b *Buffer) ReadStringMap() StringMap

func (*Buffer) ReadStringMultiMap

func (b *Buffer) ReadStringMultiMap() StringMultiMap

func (*Buffer) ReadTopologyChangeType

func (b *Buffer) ReadTopologyChangeType() TopologyChangeType

func (*Buffer) ReadTupleOption

func (b *Buffer) ReadTupleOption() *TupleOption

func (*Buffer) ReadUDTOption

func (b *Buffer) ReadUDTOption() *UDTOption

func (*Buffer) ReadUUID

func (b *Buffer) ReadUUID() UUID

func (*Buffer) ReadValue

func (b *Buffer) ReadValue() Value

Length equal to -1 represents null. Length equal to -2 represents not set.

func (*Buffer) ReadWriteType

func (b *Buffer) ReadWriteType() WriteType

func (*Buffer) Reset

func (b *Buffer) Reset()

func (*Buffer) Write

func (b *Buffer) Write(v Bytes)

func (*Buffer) WriteBatchTypeFlag

func (b *Buffer) WriteBatchTypeFlag(v BatchTypeFlag)

func (*Buffer) WriteByte

func (b *Buffer) WriteByte(v Byte)

func (*Buffer) WriteBytes

func (b *Buffer) WriteBytes(v Bytes)

func (*Buffer) WriteBytesMap

func (b *Buffer) WriteBytesMap(m BytesMap)

func (*Buffer) WriteConsistency

func (b *Buffer) WriteConsistency(v Consistency)

func (*Buffer) WriteEventTypes

func (b *Buffer) WriteEventTypes(e []EventType)

func (*Buffer) WriteHeaderFlags

func (b *Buffer) WriteHeaderFlags(v HeaderFlags)

func (*Buffer) WriteInet

func (b *Buffer) WriteInet(v Inet)

func (*Buffer) WriteInt

func (b *Buffer) WriteInt(v Int)

func (*Buffer) WriteLong

func (b *Buffer) WriteLong(v Long)

func (*Buffer) WriteLongString

func (b *Buffer) WriteLongString(s string)

func (*Buffer) WriteOpCode

func (b *Buffer) WriteOpCode(v OpCode)

func (*Buffer) WritePreparedFlags

func (b *Buffer) WritePreparedFlags(v PreparedFlags)

func (*Buffer) WriteQueryFlags

func (b *Buffer) WriteQueryFlags(v QueryFlags)

func (*Buffer) WriteQueryOptions

func (b *Buffer) WriteQueryOptions(q QueryOptions)

func (*Buffer) WriteResultFlags

func (b *Buffer) WriteResultFlags(v ResultFlags)

func (*Buffer) WriteShort

func (b *Buffer) WriteShort(v Short)

func (*Buffer) WriteShortBytes

func (b *Buffer) WriteShortBytes(v Bytes)

func (*Buffer) WriteStartupOptions

func (b *Buffer) WriteStartupOptions(m StartupOptions)

func (*Buffer) WriteStreamID

func (b *Buffer) WriteStreamID(v StreamID)

func (*Buffer) WriteString

func (b *Buffer) WriteString(s string)

func (*Buffer) WriteStringList

func (b *Buffer) WriteStringList(l StringList)

func (*Buffer) WriteStringMap

func (b *Buffer) WriteStringMap(m StringMap)

func (*Buffer) WriteStringMultiMap

func (b *Buffer) WriteStringMultiMap(m StringMultiMap)

func (*Buffer) WriteUUID

func (b *Buffer) WriteUUID(v UUID)

func (*Buffer) WriteValue

func (b *Buffer) WriteValue(v Value)

type Byte

type Byte = byte

Generic types from CQL binary protocol. https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L214-L266

const CQLv4 Byte = 0x4

CQLv4 is the only protocol version currently supported.

type Compression

type Compression string
const (
	Lz4    Compression = "lz4"
	Snappy Compression = "snappy"
)

type Consistency

type Consistency = Short

https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L246-L259

const (
	ANY         Consistency = 0x0000
	ONE         Consistency = 0x0001
	TWO         Consistency = 0x0002
	THREE       Consistency = 0x0003
	QUORUM      Consistency = 0x0004
	ALL         Consistency = 0x0005
	LOCALQUORUM Consistency = 0x0006
	EACHQUORUM  Consistency = 0x0007
	SERIAL      Consistency = 0x0008
	LOCALSERIAL Consistency = 0x0009
	LOCALONE    Consistency = 0x000A
)

type CqlValue

type CqlValue struct {
	Type  *Option
	Value Bytes
}

func CqlFromASCII

func CqlFromASCII(s string) (CqlValue, error)

func CqlFromBlob

func CqlFromBlob(b []byte) CqlValue

func CqlFromBoolean

func CqlFromBoolean(b bool) CqlValue

func CqlFromDuration added in v0.1.5

func CqlFromDuration(d Duration) (CqlValue, error)

func CqlFromFloat32

func CqlFromFloat32(v float32) CqlValue

func CqlFromFloat64

func CqlFromFloat64(v float64) CqlValue

func CqlFromIP

func CqlFromIP(ip net.IP) (CqlValue, error)

func CqlFromInt16

func CqlFromInt16(v int16) CqlValue

func CqlFromInt32

func CqlFromInt32(v int32) CqlValue

func CqlFromInt64

func CqlFromInt64(v int64) CqlValue

func CqlFromInt8

func CqlFromInt8(v int8) CqlValue

func CqlFromText

func CqlFromText(s string) (CqlValue, error)

func CqlFromTimeUUID

func CqlFromTimeUUID(b [16]byte) (CqlValue, error)

func CqlFromUUID

func CqlFromUUID(b [16]byte) CqlValue

func (CqlValue) AsASCII

func (c CqlValue) AsASCII() (string, error)

func (CqlValue) AsBlob

func (c CqlValue) AsBlob() ([]byte, error)

func (CqlValue) AsBoolean

func (c CqlValue) AsBoolean() (bool, error)

func (CqlValue) AsDuration added in v0.1.5

func (c CqlValue) AsDuration() (Duration, error)

func (CqlValue) AsFloat32

func (c CqlValue) AsFloat32() (float32, error)

func (CqlValue) AsFloat64

func (c CqlValue) AsFloat64() (float64, error)

func (CqlValue) AsIP

func (c CqlValue) AsIP() (net.IP, error)

func (CqlValue) AsInt16

func (c CqlValue) AsInt16() (int16, error)

func (CqlValue) AsInt32

func (c CqlValue) AsInt32() (int32, error)

func (CqlValue) AsInt64

func (c CqlValue) AsInt64() (int64, error)

func (CqlValue) AsInt8

func (c CqlValue) AsInt8() (int8, error)

func (CqlValue) AsStringMap

func (c CqlValue) AsStringMap() (map[string]string, error)

func (CqlValue) AsStringSlice

func (c CqlValue) AsStringSlice() ([]string, error)

func (CqlValue) AsText

func (c CqlValue) AsText() (string, error)

func (CqlValue) AsTimeUUID

func (c CqlValue) AsTimeUUID() ([16]byte, error)

func (CqlValue) AsUUID

func (c CqlValue) AsUUID() ([16]byte, error)

type Duration added in v0.1.5

type Duration struct {
	Months      int32
	Days        int32
	Nanoseconds int64
}

type ErrorCode

type ErrorCode = Int

https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L502

const (
	// ErrCodeServer indicates unexpected error on server-side.
	// See https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1051-L1052
	ErrCodeServer ErrorCode = 0x0000

	// ErrCodeProtocol indicates a protocol violation by some client message.
	// See https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1053-L1055
	ErrCodeProtocol ErrorCode = 0x000A

	// ErrCodeCredentials indicates missing required authentication.
	// See https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1056-L1059
	ErrCodeCredentials ErrorCode = 0x0100

	// ErrCodeUnavailable indicates unavailable error.
	// See https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1060-L1070
	ErrCodeUnavailable ErrorCode = 0x1000

	// ErrCodeOverloaded returned in case of request on overloaded node coordinator.
	// See https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1071-L1072
	ErrCodeOverloaded ErrorCode = 0x1001

	// ErrCodeBootstrapping returned from the coordinator node in bootstrapping phase.
	// See https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1073-L1074
	ErrCodeBootstrapping ErrorCode = 0x1002

	// ErrCodeTruncate indicates truncation exception.
	// See https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1075
	ErrCodeTruncate ErrorCode = 0x1003

	// ErrCodeWriteTimeout returned in case of timeout during the request write.
	// See https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1076-L1107
	ErrCodeWriteTimeout ErrorCode = 0x1100

	// ErrCodeReadTimeout returned in case of timeout during the request read.
	// See https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1108-L1124
	ErrCodeReadTimeout ErrorCode = 0x1200

	// ErrCodeReadFailure indicates request read error which is not covered by ErrCodeReadTimeout.
	// See https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1125-L1139
	ErrCodeReadFailure ErrorCode = 0x1300

	// ErrCodeFunctionFailure indicates an error in user-defined function.
	// See https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1140-L1146
	ErrCodeFunctionFailure ErrorCode = 0x1400

	// ErrCodeWriteFailure indicates request write error which is not covered by ErrCodeWriteTimeout.
	// See https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1147-L1180
	ErrCodeWriteFailure ErrorCode = 0x1500

	// ErrCodeSyntax indicates the syntax error in the query.
	// See https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1182
	ErrCodeSyntax ErrorCode = 0x2000

	// ErrCodeUnauthorized indicates access rights violation by user on performed operation.
	// See https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1183-L1184
	ErrCodeUnauthorized ErrorCode = 0x2100

	// ErrCodeInvalid indicates invalid query error which is not covered by ErrCodeSyntax.
	// See https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1185
	ErrCodeInvalid ErrorCode = 0x2200

	// ErrCodeConfig indicates the configuration error.
	// See https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1186
	ErrCodeConfig ErrorCode = 0x2300

	// ErrCodeAlreadyExists is returned for the requests creating the existing keyspace/table.
	// See https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1187-L1196
	ErrCodeAlreadyExists ErrorCode = 0x2400

	// ErrCodeUnprepared returned from the host for prepared statement which is unknown.
	// See https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1197-L1200
	ErrCodeUnprepared ErrorCode = 0x2500
)

See CQL Binary Protocol v4, section 9 for more details. https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1046-L1200

type EventType

type EventType = string

https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L757-L791

const (
	TopologyChange EventType = "TOPOLOGY_CHANGE"
	StatusChange   EventType = "STATUS_CHANGE"
	SchemaChange   EventType = "SCHEMA_CHANGE"
)
type Header struct {
	Version  Byte
	Flags    HeaderFlags
	StreamID StreamID
	OpCode   OpCode
	Length   Int
}

Header spec https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L101.

func ParseHeader

func ParseHeader(b *Buffer) Header

func (Header) WriteTo

func (h Header) WriteTo(b *Buffer)

type Inet

type Inet struct {
	IP   Bytes
	Port Int
}

https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L241-L245

func (Inet) String

func (i Inet) String() string

String only takes care of IP part of the address.

type MsgOptionalFields

type MsgOptionalFields struct {
	TracingID     UUID
	Warnings      StringList
	CustomPayload BytesMap
}

func ParseMsgOptionalFields

func ParseMsgOptionalFields(b *Buffer, f HeaderFlags) MsgOptionalFields

func (MsgOptionalFields) WriteTo

func (m MsgOptionalFields) WriteTo(b *Buffer)

type OpCode

type OpCode = Byte

https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L183-L201

const (
	OpError         OpCode = 0x00
	OpStartup       OpCode = 0x01
	OpReady         OpCode = 0x02
	OpAuthenticate  OpCode = 0x03
	OpOptions       OpCode = 0x05
	OpSupported     OpCode = 0x06
	OpQuery         OpCode = 0x07
	OpResult        OpCode = 0x08
	OpPrepare       OpCode = 0x09
	OpExecute       OpCode = 0x0A
	OpRegister      OpCode = 0x0B
	OpEvent         OpCode = 0x0C
	OpBatch         OpCode = 0x0D
	OpAuthChallenge OpCode = 0x0E
	OpAuthResponse  OpCode = 0x0F
	OpAuthSuccess   OpCode = 0x10
)

type OptionID

type OptionID Short

https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L236-L239

const (
	CustomID    OptionID = 0x0000
	ASCIIID     OptionID = 0x0001
	BigIntID    OptionID = 0x0002
	BlobID      OptionID = 0x0003
	BooleanID   OptionID = 0x0004
	CounterID   OptionID = 0x0005
	DecimalID   OptionID = 0x0006
	DoubleID    OptionID = 0x0007
	FloatID     OptionID = 0x0008
	IntID       OptionID = 0x0009
	TimestampID OptionID = 0x000B
	UUIDID      OptionID = 0x000C
	VarcharID   OptionID = 0x000D
	VarintID    OptionID = 0x000E
	TimeUUIDID  OptionID = 0x000F
	InetID      OptionID = 0x0010
	DateID      OptionID = 0x0011
	TimeID      OptionID = 0x0012
	SmallIntID  OptionID = 0x0013
	TinyIntID   OptionID = 0x0014
	DurationID  OptionID = 0x0015
	ListID      OptionID = 0x0020
	MapID       OptionID = 0x0021
	SetID       OptionID = 0x0022
	UDTID       OptionID = 0x0030
	TupleID     OptionID = 0x0031
)

https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L615-L658 https://github.com/apache/cassandra/blob/881b08f7015a4342833079e648e478526cc3b31a/doc/native_protocol_v5.spec#L1050-L1210

type QueryFlags

type QueryFlags = Byte

https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L346-L385

const (
	Values                QueryFlags = 0x01
	SkipMetadata          QueryFlags = 0x02
	PageSize              QueryFlags = 0x04
	WithPagingState       QueryFlags = 0x08
	WithSerialConsistency QueryFlags = 0x10
	WithDefaultTimestamp  QueryFlags = 0x20
	WithNamesForValues    QueryFlags = 0x40
)

type QueryOptions

type QueryOptions struct {
	Flags             QueryFlags
	Values            []Value
	Names             StringList
	PageSize          Int
	PagingState       Bytes
	SerialConsistency Consistency
	Timestamp         Long
}

QueryOptions represent optional Values defined by flags. Consists of Values required for all flags. Values for unset flags are uninitialized. https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L350-L385

func (*QueryOptions) SetFlags

func (q *QueryOptions) SetFlags()

type Request

type Request interface {
	WriteTo(b *Buffer)
	OpCode() OpCode
}

Request specifies interface for all frame/request types.

type Response

type Response interface{}

Response specifies interface for all frame/response types.

type ResultMetadata

type ResultMetadata struct {
	Flags      ResultFlags
	ColumnsCnt Int

	// nil if flagPagingState is not set.
	PagingState    Bytes
	GlobalKeyspace string
	GlobalTable    string

	Columns []ColumnSpec
}

https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L573-L658

type Row

type Row []CqlValue

type StreamID

type StreamID = int16

StreamID is a type alias for SIGNED Short.

type WriteType

type WriteType string

https://github.com/apache/cassandra/blob/adcff3f630c0d07d1ba33bf23fcb11a6db1b9af1/doc/native_protocol_v4.spec#L1086-L1107

const (
	Simple        WriteType = "SIMPLE"
	Batch         WriteType = "BATCH"
	UnloggedBatch WriteType = "UNLOGGED_BATCH"
	Counter       WriteType = "COUNTER"
	BatchLog      WriteType = "BATCH_LOG"
	CAS           WriteType = "CAS"
	View          WriteType = "VIEW"
	CDC           WriteType = "CDC"
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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