protocol

package module
v0.22.1 Latest Latest
Warning

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

Go to latest
Published: Aug 30, 2026 License: MIT Imports: 22 Imported by: 9

README

protocol

Centrifugal client-server protocol definitions and codecs for Go.

build GoDoc Release License Telegram Discord

This package contains the client-server protocol used by Centrifugo and the Centrifuge library, together with the encoders and decoders they use on hot paths.

The protocol is defined once in client.proto and can be serialized either as JSON or as Protobuf – the two representations are generated from the same definitions, so they never drift apart. Client SDKs in other languages generate their own code from the very same file.

Install

go get github.com/centrifugal/protocol

Most applications never import this package directly – they use Centrifugo or Centrifuge, which depend on it. Import it directly when implementing a client, a transport, or tooling that speaks the Centrifugal protocol.

Protocol in a nutshell

There are three top-level messages:

Message Direction Purpose
Command client -> server Carries exactly one request, e.g. ConnectRequest, SubscribeRequest, PublishRequest.
Reply server -> client Answers a Command with a result or an Error, or wraps an asynchronous Push.
Push server -> client Asynchronous message, e.g. Publication, Join, Leave, Disconnect.

Several messages may be streamed inside a single transport frame. In JSON they are separated by a \n delimiter, in Protobuf each message is prefixed with its length encoded as a varint.

Application payloads (such as Publication.Data) use the Raw type – a []byte passed through encoding as is, so a subscriber decodes the payload its publisher sent. The one exception is required by the JSON framing above and is documented on Raw.MarshalJSON.

Usage

Codecs are selected by protocol type and are usually taken from pools to keep the allocation count low:

decoder := protocol.GetCommandDecoder(protocol.TypeJSON, data)
defer protocol.PutCommandDecoder(protocol.TypeJSON, decoder)

for {
    cmd, err := decoder.Decode()
    if cmd != nil {
        // Handle the command.
    }
    if err != nil {
        if errors.Is(err, io.EOF) {
            break
        }
        return err
    }
}

See the package documentation for the full set of encoders and decoders, and client.proto for the message definitions with comments.

For a description of the protocol from the client point of view see the client protocol documentation on centrifugal.dev.

Generated code

client.pb.go, client_vtproto.pb.go and client.pb_easyjson.go are generated and committed to the repo. After changing client.proto, regenerate them with:

make generate

The required tools and their pinned versions are listed at the top of generate.sh. Note that the easyjson binary version must match the github.com/mailru/easyjson version in go.mod.

Development

make test   # run tests with race detector
make bench  # run benchmarks
make fuzz   # run fuzz targets for a short time
make lint   # run golangci-lint (CI pins its version in .golangci-lint-version)

Decoders are fuzzed nightly in CI, see .github/workflows/fuzz.yml.

Security

To report a vulnerability, see SECURITY.md.

License

MIT, see LICENSE.

Documentation

Overview

Package protocol contains client-server protocol definitions of the Centrifugal ecosystem (Centrifugo server and Centrifuge library) together with fast encoders and decoders for them.

The protocol is described in client.proto and consists of three top-level messages:

Serialization formats

Every message may be serialized either as JSON or as Protobuf, see Type. Both formats are generated from the same client.proto, so the two are always in sync. Which one is used is negotiated by the transport – JSON is the default, Protobuf is used by clients which need a more compact binary representation.

Messages of both formats can be streamed one after another inside a single transport frame. In JSON messages are separated by a `\n` delimiter, in Protobuf every message is prefixed with its length encoded as a varint.

Encoders and decoders

The package does not expose a single generic Marshal/Unmarshal pair. Instead it provides narrow interfaces for the parts of the protocol a server or a client needs to touch, each with a JSON and a Protobuf implementation:

Implementations are chosen by protocol Type, usually through the pooled helpers – GetCommandDecoder/PutCommandDecoder, GetDataEncoder/PutDataEncoder, GetStreamCommandDecoderLimited/PutStreamCommandDecoder and ReplyPool. These helpers reuse objects between messages and let a server avoid allocations on hot paths.

Payloads

Application-specific payloads (such as Publication Data) use the Raw type. Raw is a []byte which is passed through encoding as is, so the payload a publisher sent is the payload a subscriber decodes – see Raw.MarshalJSON for the single exception required by the JSON framing.

Stability

The protocol itself is backwards compatible: fields are only added, never repurposed. The Go API of this package is shaped by the needs of Centrifugo and Centrifuge, and while it rarely changes it does not provide the compatibility guarantees of a v1 module – pin a version when depending on it directly.

Index

Examples

Constants

View Source
const (
	// FrameCodecRaw marks a frame whose payload follows verbatim. Every receiver
	// must support it: a sender falls back to it whenever compression would not
	// shrink a frame, or has been measured not to pay off for a connection.
	FrameCodecRaw byte = 0x00
	// FrameCodecCompressed marks a frame compressed with whatever codec this
	// connection negotiated, against its active dictionary.
	FrameCodecCompressed byte = 0x01
)

Once a connection has negotiated frame compression, every frame starts with one of these markers.

The marker deliberately does not name a codec. Which codec a connection uses is settled once, at connect, by the capability flags the client advertised, so repeating it per frame would be redundant - and would make every new codec a protocol change. The marker only answers the one question that genuinely varies frame to frame: was this frame compressed at all.

View Source
const MinDictionaryCompressionLevel = 2

MinDictionaryCompressionLevel is the lowest level NewDeflateFrameCodec accepts.

DEFLATE implementations switch to specialised fast encoders below this which ignore the preset dictionary completely while still accepting it. The standard library does this at level 1: measured on a 61 byte frame against a 4KB dictionary it emits 66 bytes, versus 24 bytes at level 2 and above and 60 bytes with no dictionary at all. A level below this does not trade ratio for speed, it silently disables the entire feature while still paying to carry the dictionary around - so NewDeflateFrameCodec panics rather than accept one.

TestFrameCodecDictionaryActuallyApplies guards this.

Variables

View Source
var (
	// ErrFrameTooLarge is returned when a compressed frame expands beyond the
	// caller supplied limit. Without it a small frame could be inflated into an
	// arbitrary amount of memory.
	ErrFrameTooLarge = errors.New("centrifugal: decompressed frame too large")
	// ErrUnknownFrameCodec is returned for a frame marker the codec does not know.
	ErrUnknownFrameCodec = errors.New("centrifugal: unknown frame codec")
	// ErrEmptyFrame is returned for a frame with no codec marker at all.
	ErrEmptyFrame = errors.New("centrifugal: empty frame")
)
View Source
var (
	DefaultJsonPushEncoder     = NewJSONPushEncoder()
	DefaultProtobufPushEncoder = NewProtobufPushEncoder()
)

Default push encoders returned by GetPushEncoder. They are stateless, so a single instance per protocol type is shared by all connections.

View Source
var (
	DefaultJsonReplyEncoder     = NewJSONReplyEncoder()
	DefaultProtobufReplyEncoder = NewProtobufReplyEncoder()
)

Default reply encoders returned by GetReplyEncoder. They are stateless, so a single instance per protocol type is shared by all connections.

View Source
var ErrMessageTooLarge = errors.New("message size exceeds the limit")

ErrMessageTooLarge is returned by a StreamCommandDecoder when a command in the stream exceeds the configured message size limit.

View Source
var File_client_proto protoreflect.FileDescriptor
View Source
var ReplyPool = &ReplyPoolCollection{}

ReplyPool is the shared collection of Reply pools.

Every Acquire method returns a Reply with the corresponding result field set, and with Id and Error zeroed. Once the Reply is encoded and no longer needed, pass it to the matching Release method – after that neither the Reply nor the result it referenced must be used.

Release clears the whole envelope, not just the result field: a pooled Reply is handed to a different connection next, so any Id or Error left on it would be sent to that connection instead.

Functions

func DeflateDictionary added in v0.21.0

func DeflateDictionary(dict []byte, level int) []byte

DeflateDictionary compresses dictionary content with raw DEFLATE and no preset dictionary, for delivery to a client that has nothing installed yet.

It carries no codec marker: this is content inside a Dictionary message rather than a frame, and dictionary content is always deflated, so there is nothing to signal. A dictionary is a concatenation of real message samples, so it is ordinary text and compresses several fold - which is the difference between a first dictionary a connection can afford and one it cannot.

level is a plain flate.NewWriter level: unlike NewDeflateFrameCodec's level, there is no preset dictionary here for a low level to silently ignore, so any valid flate level is fine - MinDictionaryCompressionLevel does not apply.

func InflateDictionary added in v0.21.0

func InflateDictionary(data []byte, maxSize int) ([]byte, error)

InflateDictionary reverses DeflateDictionary, refusing anything that would expand past maxSize so a small crafted payload cannot be inflated into an unbounded allocation.

func PutCommandDecoder

func PutCommandDecoder(protoType Type, e CommandDecoder)

PutCommandDecoder returns a CommandDecoder obtained with GetCommandDecoder to the pool. The decoder must not be used after that.

func PutDataEncoder added in v0.4.0

func PutDataEncoder(protoType Type, e DataEncoder)

PutDataEncoder returns a DataEncoder obtained with GetDataEncoder to the pool. The encoder must not be used after that, and neither must the slice returned by its FinishNoCopy method.

func PutResultEncoder

func PutResultEncoder(_ Type, _ ReplyEncoder)

PutResultEncoder is a no-op kept for symmetry with GetResultEncoder: result encoders are stateless, so there is nothing to return to a pool.

func PutStreamCommandDecoder added in v0.9.0

func PutStreamCommandDecoder(protoType Type, e StreamCommandDecoder)

PutStreamCommandDecoder returns a StreamCommandDecoder obtained with GetStreamCommandDecoderLimited to the pool. The decoder must not be used after that.

Types

type ByteBuffer added in v0.7.2

type ByteBuffer struct {
	// B is the underlying byte slice.
	B []byte
}

ByteBuffer implements a simple byte buffer.

func (*ByteBuffer) Reset added in v0.7.2

func (bb *ByteBuffer) Reset()

Reset resets bb.

func (*ByteBuffer) Write added in v0.7.2

func (bb *ByteBuffer) Write(p []byte) (int, error)

Write appends p to bb.

type ClientInfo

type ClientInfo struct {
	User     string `protobuf:"bytes,1,opt,name=user,proto3" json:"user"`
	Client   string `protobuf:"bytes,2,opt,name=client,proto3" json:"client"`
	ConnInfo Raw    `protobuf:"bytes,3,opt,name=conn_info,json=connInfo,proto3" json:"conn_info,omitempty"`
	ChanInfo Raw    `protobuf:"bytes,4,opt,name=chan_info,json=chanInfo,proto3" json:"chan_info,omitempty"`
	// contains filtered or unexported fields
}

ClientInfo contains information about client connection.

func (*ClientInfo) Descriptor deprecated

func (*ClientInfo) Descriptor() ([]byte, []int)

Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead.

func (*ClientInfo) GetChanInfo added in v0.7.0

func (x *ClientInfo) GetChanInfo() []byte

func (*ClientInfo) GetClient

func (x *ClientInfo) GetClient() string

func (*ClientInfo) GetConnInfo added in v0.7.0

func (x *ClientInfo) GetConnInfo() []byte

func (*ClientInfo) GetUser

func (x *ClientInfo) GetUser() string

func (ClientInfo) MarshalEasyJSON added in v0.6.0

func (v ClientInfo) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*ClientInfo) MarshalToSizedBufferVT added in v0.7.0

func (m *ClientInfo) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*ClientInfo) MarshalToVT added in v0.7.0

func (m *ClientInfo) MarshalToVT(dAtA []byte) (int, error)

func (*ClientInfo) MarshalVT added in v0.7.0

func (m *ClientInfo) MarshalVT() (dAtA []byte, err error)

func (*ClientInfo) ProtoMessage

func (*ClientInfo) ProtoMessage()

func (*ClientInfo) ProtoReflect added in v0.7.0

func (x *ClientInfo) ProtoReflect() protoreflect.Message

func (*ClientInfo) Reset

func (x *ClientInfo) Reset()

func (*ClientInfo) SizeVT added in v0.7.0

func (m *ClientInfo) SizeVT() (n int)

func (*ClientInfo) String

func (x *ClientInfo) String() string

func (*ClientInfo) UnmarshalEasyJSON added in v0.6.0

func (v *ClientInfo) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*ClientInfo) UnmarshalVT added in v0.7.0

func (m *ClientInfo) UnmarshalVT(dAtA []byte) error

type Command

type Command struct {

	// Id of command to let client match replies to commands.
	Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	// Client can send one of the following requests. Server will
	// only take the first non-null request out of these and may return an error if
	// client passed more than one request. We are not using oneof here due to JSON
	// interoperability concerns.
	Connect       *ConnectRequest       `protobuf:"bytes,4,opt,name=connect,proto3" json:"connect,omitempty"`
	Subscribe     *SubscribeRequest     `protobuf:"bytes,5,opt,name=subscribe,proto3" json:"subscribe,omitempty"`
	Unsubscribe   *UnsubscribeRequest   `protobuf:"bytes,6,opt,name=unsubscribe,proto3" json:"unsubscribe,omitempty"`
	Publish       *PublishRequest       `protobuf:"bytes,7,opt,name=publish,proto3" json:"publish,omitempty"`
	Presence      *PresenceRequest      `protobuf:"bytes,8,opt,name=presence,proto3" json:"presence,omitempty"`
	PresenceStats *PresenceStatsRequest `protobuf:"bytes,9,opt,name=presence_stats,json=presenceStats,proto3" json:"presence_stats,omitempty"`
	History       *HistoryRequest       `protobuf:"bytes,10,opt,name=history,proto3" json:"history,omitempty"`
	Ping          *PingRequest          `protobuf:"bytes,11,opt,name=ping,proto3" json:"ping,omitempty"`
	Send          *SendRequest          `protobuf:"bytes,12,opt,name=send,proto3" json:"send,omitempty"`
	Rpc           *RPCRequest           `protobuf:"bytes,13,opt,name=rpc,proto3" json:"rpc,omitempty"`
	Refresh       *RefreshRequest       `protobuf:"bytes,14,opt,name=refresh,proto3" json:"refresh,omitempty"`
	SubRefresh    *SubRefreshRequest    `protobuf:"bytes,15,opt,name=sub_refresh,json=subRefresh,proto3" json:"sub_refresh,omitempty"`
	// contains filtered or unexported fields
}

Command sent from a client to a server.

func (*Command) Descriptor deprecated

func (*Command) Descriptor() ([]byte, []int)

Deprecated: Use Command.ProtoReflect.Descriptor instead.

func (*Command) GetConnect added in v0.8.0

func (x *Command) GetConnect() *ConnectRequest

func (*Command) GetHistory added in v0.8.0

func (x *Command) GetHistory() *HistoryRequest

func (*Command) GetId added in v0.4.1

func (x *Command) GetId() uint32

func (*Command) GetPing added in v0.8.0

func (x *Command) GetPing() *PingRequest

func (*Command) GetPresence added in v0.8.0

func (x *Command) GetPresence() *PresenceRequest

func (*Command) GetPresenceStats added in v0.8.0

func (x *Command) GetPresenceStats() *PresenceStatsRequest

func (*Command) GetPublish added in v0.8.0

func (x *Command) GetPublish() *PublishRequest

func (*Command) GetRefresh added in v0.8.0

func (x *Command) GetRefresh() *RefreshRequest

func (*Command) GetRpc added in v0.8.0

func (x *Command) GetRpc() *RPCRequest

func (*Command) GetSend added in v0.8.0

func (x *Command) GetSend() *SendRequest

func (*Command) GetSubRefresh added in v0.8.0

func (x *Command) GetSubRefresh() *SubRefreshRequest

func (*Command) GetSubscribe added in v0.8.0

func (x *Command) GetSubscribe() *SubscribeRequest

func (*Command) GetUnsubscribe added in v0.8.0

func (x *Command) GetUnsubscribe() *UnsubscribeRequest

func (Command) MarshalEasyJSON added in v0.6.0

func (v Command) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*Command) MarshalToSizedBufferVT added in v0.7.0

func (m *Command) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*Command) MarshalToVT added in v0.7.0

func (m *Command) MarshalToVT(dAtA []byte) (int, error)

func (*Command) MarshalVT added in v0.7.0

func (m *Command) MarshalVT() (dAtA []byte, err error)

func (*Command) ProtoMessage

func (*Command) ProtoMessage()

func (*Command) ProtoReflect added in v0.7.0

func (x *Command) ProtoReflect() protoreflect.Message

func (*Command) Reset

func (x *Command) Reset()

func (*Command) SizeVT added in v0.7.0

func (m *Command) SizeVT() (n int)

func (*Command) String

func (x *Command) String() string

func (*Command) UnmarshalEasyJSON added in v0.6.0

func (v *Command) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*Command) UnmarshalVT added in v0.7.0

func (m *Command) UnmarshalVT(dAtA []byte) error

type CommandDecoder

type CommandDecoder interface {
	// Reset makes the decoder ready to decode commands from the given frame.
	Reset([]byte) error
	// Decode returns the next Command in the frame.
	Decode() (*Command, error)
}

CommandDecoder decodes commands from a transport frame which may contain several of them, see DataEncoder for the framing used.

Decode returns io.EOF together with the last successfully decoded Command, so a non-nil Command must be handled even when an error is returned:

for {
	cmd, err := decoder.Decode()
	if cmd != nil {
		// Handle the command.
	}
	if err != nil {
		// io.EOF means the frame is fully processed.
		break
	}
}

A CommandDecoder is not safe for concurrent use. Use GetCommandDecoder and PutCommandDecoder to take one from a pool and return it back when done.

func GetCommandDecoder

func GetCommandDecoder(protoType Type, data []byte) CommandDecoder

GetCommandDecoder returns a CommandDecoder for the given protocol type, taking it from a pool and resetting it to the given frame. Return it with PutCommandDecoder once the frame is fully processed. Any type other than TypeJSON is treated as TypeProtobuf.

Example

A single transport frame may contain several commands: in JSON they are separated by a `\n` delimiter, in Protobuf each command is prefixed with its length. Decoders take care of the framing, so the loop is the same for both.

package main

import (
	"errors"
	"fmt"
	"io"

	"github.com/centrifugal/protocol"
)

func main() {
	frame := []byte(`{"id":1,"connect":{"name":"go"}}
{"id":2,"subscribe":{"channel":"news"}}`)

	decoder := protocol.GetCommandDecoder(protocol.TypeJSON, frame)
	defer protocol.PutCommandDecoder(protocol.TypeJSON, decoder)

	for {
		cmd, err := decoder.Decode()
		if cmd != nil {
			// Server takes the first non-null request out of a Command.
			switch {
			case cmd.Connect != nil:
				fmt.Println(cmd.Id, protocol.FrameTypeConnect, cmd.Connect.Name)
			case cmd.Subscribe != nil:
				fmt.Println(cmd.Id, protocol.FrameTypeSubscribe, cmd.Subscribe.Channel)
			}
		}
		if err != nil {
			if !errors.Is(err, io.EOF) {
				fmt.Println("decode error:", err)
			}
			break
		}
	}
}
Output:
1 connect go
2 subscribe news

type CommandEncoder

type CommandEncoder interface {
	Encode(cmd *Command) ([]byte, error)
}

CommandEncoder encodes Command to bytes. It's the client-side counterpart of CommandDecoder.

type Connect added in v0.4.0

type Connect struct {
	Client  string                      `protobuf:"bytes,1,opt,name=client,proto3" json:"client,omitempty"`
	Version string                      `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
	Data    Raw                         `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
	Subs    map[string]*SubscribeResult `` /* 135-byte string literal not displayed */
	Expires bool                        `protobuf:"varint,5,opt,name=expires,proto3" json:"expires,omitempty"`
	Ttl     uint32                      `protobuf:"varint,6,opt,name=ttl,proto3" json:"ttl,omitempty"`
	Ping    uint32                      `protobuf:"varint,7,opt,name=ping,proto3" json:"ping,omitempty"`
	Pong    bool                        `protobuf:"varint,8,opt,name=pong,proto3" json:"pong,omitempty"`
	Session string                      `protobuf:"bytes,9,opt,name=session,proto3" json:"session,omitempty"`
	Node    string                      `protobuf:"bytes,10,opt,name=node,proto3" json:"node,omitempty"`
	Time    int64                       `protobuf:"varint,11,opt,name=time,proto3" json:"time,omitempty"` // Server time as Unix timestamp in milliseconds (not sent by default).
	// contains filtered or unexported fields
}

func (*Connect) Descriptor deprecated added in v0.4.0

func (*Connect) Descriptor() ([]byte, []int)

Deprecated: Use Connect.ProtoReflect.Descriptor instead.

func (*Connect) GetClient added in v0.4.0

func (x *Connect) GetClient() string

func (*Connect) GetData added in v0.7.0

func (x *Connect) GetData() []byte

func (*Connect) GetExpires added in v0.6.0

func (x *Connect) GetExpires() bool

func (*Connect) GetNode added in v0.8.5

func (x *Connect) GetNode() string

func (*Connect) GetPing added in v0.8.2

func (x *Connect) GetPing() uint32

func (*Connect) GetPong added in v0.8.3

func (x *Connect) GetPong() bool

func (*Connect) GetSession added in v0.8.4

func (x *Connect) GetSession() string

func (*Connect) GetSubs added in v0.4.0

func (x *Connect) GetSubs() map[string]*SubscribeResult

func (*Connect) GetTime added in v0.13.1

func (x *Connect) GetTime() int64

func (*Connect) GetTtl added in v0.6.0

func (x *Connect) GetTtl() uint32

func (*Connect) GetVersion added in v0.4.0

func (x *Connect) GetVersion() string

func (Connect) MarshalEasyJSON added in v0.6.0

func (v Connect) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*Connect) MarshalToSizedBufferVT added in v0.7.0

func (m *Connect) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*Connect) MarshalToVT added in v0.7.0

func (m *Connect) MarshalToVT(dAtA []byte) (int, error)

func (*Connect) MarshalVT added in v0.7.0

func (m *Connect) MarshalVT() (dAtA []byte, err error)

func (*Connect) ProtoMessage added in v0.4.0

func (*Connect) ProtoMessage()

func (*Connect) ProtoReflect added in v0.7.0

func (x *Connect) ProtoReflect() protoreflect.Message

func (*Connect) Reset added in v0.4.0

func (x *Connect) Reset()

func (*Connect) SizeVT added in v0.7.0

func (m *Connect) SizeVT() (n int)

func (*Connect) String added in v0.4.0

func (x *Connect) String() string

func (*Connect) UnmarshalEasyJSON added in v0.6.0

func (v *Connect) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*Connect) UnmarshalVT added in v0.7.0

func (m *Connect) UnmarshalVT(dAtA []byte) error

type ConnectRequest

type ConnectRequest struct {
	Token   string                       `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
	Data    Raw                          `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
	Subs    map[string]*SubscribeRequest `` /* 135-byte string literal not displayed */
	Name    string                       `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
	Version string                       `protobuf:"bytes,5,opt,name=version,proto3" json:"version,omitempty"`
	Headers map[string]string            `` /* 141-byte string literal not displayed */
	// Connection level features this client supports, as a bitmask. The server
	// replies with the subset it enabled in ConnectResult.flag.
	Flag int64 `protobuf:"varint,7,opt,name=flag,proto3" json:"flag,omitempty"`
	// Application context this connection belongs to - which view, screen or
	// client kind it is. Connections sharing a profile see traffic of a similar
	// shape.
	//
	// Untrusted: the server may override it, and features built on it must treat
	// it as a hint rather than an assertion.
	Profile string `protobuf:"bytes,9,opt,name=profile,proto3" json:"profile,omitempty"`
	// Id of the compression dictionary this client already holds, so the server
	// can name it instead of sending it again.
	//
	// The server answers with a Dictionary carrying only an id when it recognises
	// this one, and with the full content otherwise - so an unknown id is a cache
	// miss rather than an error.
	//
	// An id is a hash of the dictionary content, so this id and the server's copy
	// are byte identical by construction: a dictionary that changes gets a new id
	// automatically.
	//
	// Deliberately one, not a list. A client caches the last dictionary it was
	// given, which is the one it needs when reconnecting to the same profile. The
	// cost is one extra transfer per hop during a rolling deploy where nodes
	// disagree, which is bounded and small.
	Dict string `protobuf:"bytes,8,opt,name=dict,proto3" json:"dict,omitempty"`
	// contains filtered or unexported fields
}

func (*ConnectRequest) Descriptor deprecated

func (*ConnectRequest) Descriptor() ([]byte, []int)

Deprecated: Use ConnectRequest.ProtoReflect.Descriptor instead.

func (*ConnectRequest) GetData added in v0.7.0

func (x *ConnectRequest) GetData() []byte

func (*ConnectRequest) GetDict added in v0.21.0

func (x *ConnectRequest) GetDict() string

func (*ConnectRequest) GetFlag added in v0.17.0

func (x *ConnectRequest) GetFlag() int64

func (*ConnectRequest) GetHeaders added in v0.14.0

func (x *ConnectRequest) GetHeaders() map[string]string

func (*ConnectRequest) GetName added in v0.3.4

func (x *ConnectRequest) GetName() string

func (*ConnectRequest) GetProfile added in v0.21.0

func (x *ConnectRequest) GetProfile() string

func (*ConnectRequest) GetSubs

func (x *ConnectRequest) GetSubs() map[string]*SubscribeRequest

func (*ConnectRequest) GetToken

func (x *ConnectRequest) GetToken() string

func (*ConnectRequest) GetVersion added in v0.3.4

func (x *ConnectRequest) GetVersion() string

func (ConnectRequest) MarshalEasyJSON added in v0.6.0

func (v ConnectRequest) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*ConnectRequest) MarshalToSizedBufferVT added in v0.7.0

func (m *ConnectRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*ConnectRequest) MarshalToVT added in v0.7.0

func (m *ConnectRequest) MarshalToVT(dAtA []byte) (int, error)

func (*ConnectRequest) MarshalVT added in v0.7.0

func (m *ConnectRequest) MarshalVT() (dAtA []byte, err error)

func (*ConnectRequest) ProtoMessage

func (*ConnectRequest) ProtoMessage()

func (*ConnectRequest) ProtoReflect added in v0.7.0

func (x *ConnectRequest) ProtoReflect() protoreflect.Message

func (*ConnectRequest) Reset

func (x *ConnectRequest) Reset()

func (*ConnectRequest) SizeVT added in v0.7.0

func (m *ConnectRequest) SizeVT() (n int)

func (*ConnectRequest) String

func (x *ConnectRequest) String() string

func (*ConnectRequest) UnmarshalEasyJSON added in v0.6.0

func (v *ConnectRequest) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*ConnectRequest) UnmarshalVT added in v0.7.0

func (m *ConnectRequest) UnmarshalVT(dAtA []byte) error

type ConnectResult

type ConnectResult struct {
	Client  string                      `protobuf:"bytes,1,opt,name=client,proto3" json:"client,omitempty"`
	Version string                      `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
	Expires bool                        `protobuf:"varint,3,opt,name=expires,proto3" json:"expires,omitempty"`
	Ttl     uint32                      `protobuf:"varint,4,opt,name=ttl,proto3" json:"ttl,omitempty"`
	Data    Raw                         `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"`
	Subs    map[string]*SubscribeResult `` /* 135-byte string literal not displayed */
	Ping    uint32                      `protobuf:"varint,7,opt,name=ping,proto3" json:"ping,omitempty"`
	Pong    bool                        `protobuf:"varint,8,opt,name=pong,proto3" json:"pong,omitempty"`
	Session string                      `protobuf:"bytes,9,opt,name=session,proto3" json:"session,omitempty"`
	Node    string                      `protobuf:"bytes,10,opt,name=node,proto3" json:"node,omitempty"`
	Time    int64                       `protobuf:"varint,11,opt,name=time,proto3" json:"time,omitempty"` // Server time as Unix timestamp in milliseconds (not sent by default).
	// Connection level features the server actually enabled, using the same bits
	// as ConnectRequest.flag. A client can not assume a feature it advertised was
	// accepted - the server may have it disabled, or may decline per connection -
	// so this is how it finds out.
	Flag int64 `protobuf:"varint,12,opt,name=flag,proto3" json:"flag,omitempty"`
	// Compression dictionary for this connection, when the server enabled
	// dictionary compression.
	//
	// It travels in the connect reply rather than a push so there is no ordering
	// rule to get wrong: this frame is raw, and every frame after it is
	// compressed. It carries only an id when the client advertised that same id in
	// ConnectRequest.dict, since the client already holds the bytes.
	Dict *Dictionary `protobuf:"bytes,13,opt,name=dict,proto3" json:"dict,omitempty"`
	// contains filtered or unexported fields
}

func (*ConnectResult) Descriptor deprecated

func (*ConnectResult) Descriptor() ([]byte, []int)

Deprecated: Use ConnectResult.ProtoReflect.Descriptor instead.

func (*ConnectResult) GetClient

func (x *ConnectResult) GetClient() string

func (*ConnectResult) GetData added in v0.7.0

func (x *ConnectResult) GetData() []byte

func (*ConnectResult) GetDict added in v0.21.0

func (x *ConnectResult) GetDict() *Dictionary

func (*ConnectResult) GetExpires

func (x *ConnectResult) GetExpires() bool

func (*ConnectResult) GetFlag added in v0.21.0

func (x *ConnectResult) GetFlag() int64

func (*ConnectResult) GetNode added in v0.8.5

func (x *ConnectResult) GetNode() string

func (*ConnectResult) GetPing added in v0.8.2

func (x *ConnectResult) GetPing() uint32

func (*ConnectResult) GetPong added in v0.8.3

func (x *ConnectResult) GetPong() bool

func (*ConnectResult) GetSession added in v0.8.4

func (x *ConnectResult) GetSession() string

func (*ConnectResult) GetSubs

func (x *ConnectResult) GetSubs() map[string]*SubscribeResult

func (*ConnectResult) GetTime added in v0.13.0

func (x *ConnectResult) GetTime() int64

func (*ConnectResult) GetTtl added in v0.4.1

func (x *ConnectResult) GetTtl() uint32

func (*ConnectResult) GetVersion

func (x *ConnectResult) GetVersion() string

func (ConnectResult) MarshalEasyJSON added in v0.6.0

func (v ConnectResult) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*ConnectResult) MarshalToSizedBufferVT added in v0.7.0

func (m *ConnectResult) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*ConnectResult) MarshalToVT added in v0.7.0

func (m *ConnectResult) MarshalToVT(dAtA []byte) (int, error)

func (*ConnectResult) MarshalVT added in v0.7.0

func (m *ConnectResult) MarshalVT() (dAtA []byte, err error)

func (*ConnectResult) ProtoMessage

func (*ConnectResult) ProtoMessage()

func (*ConnectResult) ProtoReflect added in v0.7.0

func (x *ConnectResult) ProtoReflect() protoreflect.Message

func (*ConnectResult) Reset

func (x *ConnectResult) Reset()

func (*ConnectResult) SizeVT added in v0.7.0

func (m *ConnectResult) SizeVT() (n int)

func (*ConnectResult) String

func (x *ConnectResult) String() string

func (*ConnectResult) UnmarshalEasyJSON added in v0.6.0

func (v *ConnectResult) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*ConnectResult) UnmarshalVT added in v0.7.0

func (m *ConnectResult) UnmarshalVT(dAtA []byte) error

type DataEncoder added in v0.4.0

type DataEncoder interface {
	// Reset prepares the encoder to build a new frame, dropping everything
	// encoded so far.
	Reset()
	// Encode appends an already encoded message to the frame.
	Encode([]byte) error
	// Finish returns a copy of the frame built so far.
	Finish() []byte
	// FinishNoCopy returns the frame built so far without copying it. The
	// returned slice is only valid until the next Reset or Encode call, so use
	// it only if the data is written to a connection before that happens.
	FinishNoCopy() []byte
}

DataEncoder concatenates already encoded messages into a single transport frame, applying the framing of a concrete protocol Type: messages are separated by a `\n` delimiter in JSON and prefixed with their length in Protobuf.

A DataEncoder is not safe for concurrent use. Use GetDataEncoder and PutDataEncoder to take one from a pool and return it back when done.

func GetDataEncoder added in v0.4.0

func GetDataEncoder(protoType Type) DataEncoder

GetDataEncoder returns a DataEncoder for the given protocol type, taking it from a pool and resetting it. Return it with PutDataEncoder once the frame is built. Any type other than TypeJSON is treated as TypeProtobuf.

type DeflateFrameCodec added in v0.21.0

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

DeflateFrameCodec compresses and decompresses whole transport frames with DEFLATE against a shared preset dictionary, applying the frame marker convention above.

It lives in this package because a server and a client have to agree on it byte for byte, and this package is the only thing they both import - putting it anywhere else would let the two sides drift. It is not an abstraction over codecs: it is the one codec the protocol ships with. A second algorithm would be a sibling type emitting the same markers, not an implementation of an interface here, since which codec a connection uses is settled by capability flags at connect rather than by anything on the wire.

One codec is meant to be shared by every connection using the same dictionary, and it is safe for concurrent use. This matters: a DEFLATE writer retains several hundred kilobytes of window and hash state, so giving each connection its own would dwarf the rest of a connection's footprint. Pooling them behind a shared codec keeps that cost proportional to the number of concurrent writes instead of the number of connections.

func NewDeflateFrameCodec added in v0.21.0

func NewDeflateFrameCodec(id string, dict []byte, level int) *DeflateFrameCodec

NewDeflateFrameCodec builds a codec for the given dictionary. id identifies the dictionary content so both sides can tell which one a frame was built with.

level is a DEFLATE compression level from MinDictionaryCompressionLevel to 9. It affects only how hard this side's encoder works to shrink a frame, and never needs to match what the other side of a connection uses: DEFLATE's format is self-describing per block, so a decoder never depends on which level produced its input, only on sharing the same dictionary. NewDeflateFrameCodec panics if level is below MinDictionaryCompressionLevel, since that silently disables the dictionary rather than trading ratio for speed.

This package does not recommend one level for every caller, because the right choice depends on traffic and dictionary shapes only the caller sees, and it has already moved once as compress/flate itself changed. Measured on go1.26.5 and go1.27.0, frames drawn from the vocabulary a dictionary is built from, against a few KB dictionary:

  • go1.26: levels 2-9 are byte-identical in output and cost, because a per-frame compression there is dominated by loading the dictionary on Reset, not by encoding the frame - the level only governs the smaller half of the work.
  • go1.27 rewrote compress/flate's levels 2-6 into new encoders optimised for large-payload throughput (golang/go#75532), at the cost of ratio for a small payload against a large preset dictionary - exactly this codec's shape. A 40 byte frame against a 2.4KB dictionary compresses to 47 bytes at level 6 on go1.27 (worse than sending it raw) versus 34 bytes on go1.26. Levels 7-9 kept the old algorithm, so they are unaffected: 31 bytes on either Go version, at a CPU cost within a few percent of what level 6 cost on go1.26 - i.e. level 7 on go1.27 tracks the historical level-6 cost/ratio, where level 6 on go1.27 does not.
  • Levels 7, 8 and 9 produce byte-identical output for this shape, so 9 buys nothing over 7 and only costs more CPU for a caller with this shape of traffic.

func (*DeflateFrameCodec) Compress added in v0.21.0

func (c *DeflateFrameCodec) Compress(dst, src []byte) []byte

Compress encodes src into a framed payload appended to dst.

It falls back to FrameCodecRaw whenever compression does not actually shrink the frame, so an incompressible payload - already compressed data, encrypted blobs - costs one marker byte instead of growing.

func (*DeflateFrameCodec) Decompress added in v0.21.0

func (c *DeflateFrameCodec) Decompress(dst, frame []byte, maxSize int) ([]byte, error)

Decompress decodes a framed payload produced by Compress, appending the result to dst. maxSize bounds the decompressed output, pass 0 to leave it unbounded.

func (*DeflateFrameCodec) Dict added in v0.21.0

func (c *DeflateFrameCodec) Dict() []byte

Dict returns the raw dictionary bytes. The result must not be modified.

func (*DeflateFrameCodec) ID added in v0.21.0

func (c *DeflateFrameCodec) ID() string

ID returns the dictionary identifier this codec was built for.

type Dictionary added in v0.21.0

type Dictionary struct {

	// Identifier of dictionary content, client may cache by it.
	//
	// It is SHA-256 of the content, first 12 bytes, base64url without padding.
	//
	// The derivation is fixed rather than conventional, because a client that
	// keeps a dictionary between connections hashes the bytes it stored against
	// this id before reusing them. Storage shared with anything else on the
	// client's origin can be rewritten, and DEFLATE back references resolve into
	// the dictionary - so substituted content does not corrupt a frame, it makes
	// a genuine server frame decode into whatever the substituter chose. Only an
	// id the server issued detects that: a checksum the client stored alongside
	// would simply be rewritten with the bytes.
	//
	// A server identifying dictionaries some other way is not rejected. It has
	// every caching client quietly stop caching instead, which is worse.
	//
	// It also means one id can never name two different dictionaries, so a client
	// reconnecting to a node that built its own gets an exact match or a miss,
	// never the wrong bytes.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// The dictionary content, always DEFLATE compressed. Inflate it with no preset
	// dictionary before use.
	//
	// It is compressed because it arrives in the connect reply, which cannot be
	// compressed at the frame level - nothing is installed yet to compress it
	// against. Compressing the content instead is worth about 8x on JSON, and a
	// dictionary is sampled message text so it always compresses.
	//
	// data is set on Protobuf connections, where bytes travel directly. data_b64
	// is set on JSON connections, where a bytes field carries raw JSON and cannot
	// hold binary. Exactly one of them is set, and neither when the server is
	// naming a dictionary the client already holds.
	Data    Raw    `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
	DataB64 string `protobuf:"bytes,3,opt,name=data_b64,json=dataB64,proto3" json:"data_b64,omitempty"`
	// contains filtered or unexported fields
}

Dictionary is a shared compression dictionary the server asks the client to use for subsequent frames on this connection. It arrives in the connect reply, and every frame after that reply starts with a one byte codec marker saying whether it was compressed.

func (*Dictionary) Descriptor deprecated added in v0.21.0

func (*Dictionary) Descriptor() ([]byte, []int)

Deprecated: Use Dictionary.ProtoReflect.Descriptor instead.

func (*Dictionary) GetData added in v0.21.0

func (x *Dictionary) GetData() []byte

func (*Dictionary) GetDataB64 added in v0.21.0

func (x *Dictionary) GetDataB64() string

func (*Dictionary) GetId added in v0.21.0

func (x *Dictionary) GetId() string

func (Dictionary) MarshalEasyJSON added in v0.21.0

func (v Dictionary) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*Dictionary) MarshalToSizedBufferVT added in v0.21.0

func (m *Dictionary) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*Dictionary) MarshalToVT added in v0.21.0

func (m *Dictionary) MarshalToVT(dAtA []byte) (int, error)

func (*Dictionary) MarshalVT added in v0.21.0

func (m *Dictionary) MarshalVT() (dAtA []byte, err error)

func (*Dictionary) ProtoMessage added in v0.21.0

func (*Dictionary) ProtoMessage()

func (*Dictionary) ProtoReflect added in v0.21.0

func (x *Dictionary) ProtoReflect() protoreflect.Message

func (*Dictionary) Reset added in v0.21.0

func (x *Dictionary) Reset()

func (*Dictionary) SizeVT added in v0.21.0

func (m *Dictionary) SizeVT() (n int)

func (*Dictionary) String added in v0.21.0

func (x *Dictionary) String() string

func (*Dictionary) UnmarshalEasyJSON added in v0.21.0

func (v *Dictionary) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*Dictionary) UnmarshalVT added in v0.21.0

func (m *Dictionary) UnmarshalVT(dAtA []byte) error

type Disconnect added in v0.4.0

type Disconnect struct {
	Code      uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Reason    string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
	Reconnect bool   `protobuf:"varint,3,opt,name=reconnect,proto3" json:"reconnect,omitempty"`
	// contains filtered or unexported fields
}

func (*Disconnect) Descriptor deprecated added in v0.4.0

func (*Disconnect) Descriptor() ([]byte, []int)

Deprecated: Use Disconnect.ProtoReflect.Descriptor instead.

func (*Disconnect) GetCode added in v0.4.0

func (x *Disconnect) GetCode() uint32

func (*Disconnect) GetReason added in v0.4.0

func (x *Disconnect) GetReason() string

func (*Disconnect) GetReconnect added in v0.4.0

func (x *Disconnect) GetReconnect() bool

func (Disconnect) MarshalEasyJSON added in v0.6.0

func (v Disconnect) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*Disconnect) MarshalToSizedBufferVT added in v0.7.0

func (m *Disconnect) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*Disconnect) MarshalToVT added in v0.7.0

func (m *Disconnect) MarshalToVT(dAtA []byte) (int, error)

func (*Disconnect) MarshalVT added in v0.7.0

func (m *Disconnect) MarshalVT() (dAtA []byte, err error)

func (*Disconnect) ProtoMessage added in v0.4.0

func (*Disconnect) ProtoMessage()

func (*Disconnect) ProtoReflect added in v0.7.0

func (x *Disconnect) ProtoReflect() protoreflect.Message

func (*Disconnect) Reset added in v0.4.0

func (x *Disconnect) Reset()

func (*Disconnect) SizeVT added in v0.7.0

func (m *Disconnect) SizeVT() (n int)

func (*Disconnect) String added in v0.4.0

func (x *Disconnect) String() string

func (*Disconnect) UnmarshalEasyJSON added in v0.6.0

func (v *Disconnect) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*Disconnect) UnmarshalVT added in v0.7.0

func (m *Disconnect) UnmarshalVT(dAtA []byte) error

type EmulationRequest added in v0.8.5

type EmulationRequest struct {
	Node    string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"`
	Session string `protobuf:"bytes,2,opt,name=session,proto3" json:"session,omitempty"`
	Data    Raw    `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
	// contains filtered or unexported fields
}

func (*EmulationRequest) Descriptor deprecated added in v0.8.5

func (*EmulationRequest) Descriptor() ([]byte, []int)

Deprecated: Use EmulationRequest.ProtoReflect.Descriptor instead.

func (*EmulationRequest) GetData added in v0.8.5

func (x *EmulationRequest) GetData() []byte

func (*EmulationRequest) GetNode added in v0.8.5

func (x *EmulationRequest) GetNode() string

func (*EmulationRequest) GetSession added in v0.8.5

func (x *EmulationRequest) GetSession() string

func (EmulationRequest) MarshalEasyJSON added in v0.8.5

func (v EmulationRequest) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*EmulationRequest) MarshalToSizedBufferVT added in v0.8.5

func (m *EmulationRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*EmulationRequest) MarshalToVT added in v0.8.5

func (m *EmulationRequest) MarshalToVT(dAtA []byte) (int, error)

func (*EmulationRequest) MarshalVT added in v0.8.5

func (m *EmulationRequest) MarshalVT() (dAtA []byte, err error)

func (*EmulationRequest) ProtoMessage added in v0.8.5

func (*EmulationRequest) ProtoMessage()

func (*EmulationRequest) ProtoReflect added in v0.8.5

func (x *EmulationRequest) ProtoReflect() protoreflect.Message

func (*EmulationRequest) Reset added in v0.8.5

func (x *EmulationRequest) Reset()

func (*EmulationRequest) SizeVT added in v0.8.5

func (m *EmulationRequest) SizeVT() (n int)

func (*EmulationRequest) String added in v0.8.5

func (x *EmulationRequest) String() string

func (*EmulationRequest) UnmarshalEasyJSON added in v0.8.5

func (v *EmulationRequest) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*EmulationRequest) UnmarshalVT added in v0.8.5

func (m *EmulationRequest) UnmarshalVT(dAtA []byte) error

type Error

type Error struct {
	Code      uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message   string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	Temporary bool   `protobuf:"varint,3,opt,name=temporary,proto3" json:"temporary,omitempty"`
	// contains filtered or unexported fields
}

func (*Error) Descriptor deprecated

func (*Error) Descriptor() ([]byte, []int)

Deprecated: Use Error.ProtoReflect.Descriptor instead.

func (*Error) GetCode

func (x *Error) GetCode() uint32

func (*Error) GetMessage

func (x *Error) GetMessage() string

func (*Error) GetTemporary added in v0.8.5

func (x *Error) GetTemporary() bool

func (Error) MarshalEasyJSON added in v0.6.0

func (v Error) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*Error) MarshalToSizedBufferVT added in v0.7.0

func (m *Error) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*Error) MarshalToVT added in v0.7.0

func (m *Error) MarshalToVT(dAtA []byte) (int, error)

func (*Error) MarshalVT added in v0.7.0

func (m *Error) MarshalVT() (dAtA []byte, err error)

func (*Error) ProtoMessage

func (*Error) ProtoMessage()

func (*Error) ProtoReflect added in v0.7.0

func (x *Error) ProtoReflect() protoreflect.Message

func (*Error) Reset

func (x *Error) Reset()

func (*Error) SizeVT added in v0.7.0

func (m *Error) SizeVT() (n int)

func (*Error) String

func (x *Error) String() string

func (*Error) UnmarshalEasyJSON added in v0.6.0

func (v *Error) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*Error) UnmarshalVT added in v0.7.0

func (m *Error) UnmarshalVT(dAtA []byte) error

type FilterNode added in v0.17.0

type FilterNode struct {

	// Operation type for this node:
	// - "" (empty string) → leaf node (comparison)
	// - "and" → logical AND of child nodes
	// - "or"  → logical OR of child nodes
	// - "not" → logical NOT of a single child node
	Op string `protobuf:"bytes,1,opt,name=op,proto3" json:"op,omitempty"`
	// Key for comparison (only valid for leaf nodes).
	Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
	// Comparison operator for leaf nodes.
	// Only meaningful if op == "".
	// Supported values:
	//
	//	"eq"   → equal
	//	"neq"  → not equal
	//	"in"   → value is in vals
	//	"nin"  → value is not in vals
	//	"ex"   → key exists in tags
	//	"nex"  → key does not exist
	//	"sw"   → string starts with val
	//	"ew"   → string ends with val
	//	"ct"   → string contains val
	//	"lt"   → numeric less than val
	//	"lte"  → numeric less than or equal val
	//	"gt"   → numeric greater than val
	//	"gte"  → numeric greater than or equal val
	Cmp string `protobuf:"bytes,3,opt,name=cmp,proto3" json:"cmp,omitempty"`
	// Single value used in most comparisons (e.g. "eq").
	Val string `protobuf:"bytes,4,opt,name=val,proto3" json:"val,omitempty"`
	// Multiple values used for set comparisons ("in", "nin").
	Vals []string `protobuf:"bytes,5,rep,name=vals,proto3" json:"vals,omitempty"`
	// Child nodes.
	// Used for logical operations: "and", "or", "not".
	Nodes []*FilterNode `protobuf:"bytes,6,rep,name=nodes,proto3" json:"nodes,omitempty"`
	// contains filtered or unexported fields
}

func (*FilterNode) Descriptor deprecated added in v0.17.0

func (*FilterNode) Descriptor() ([]byte, []int)

Deprecated: Use FilterNode.ProtoReflect.Descriptor instead.

func (*FilterNode) GetCmp added in v0.17.0

func (x *FilterNode) GetCmp() string

func (*FilterNode) GetKey added in v0.17.0

func (x *FilterNode) GetKey() string

func (*FilterNode) GetNodes added in v0.17.0

func (x *FilterNode) GetNodes() []*FilterNode

func (*FilterNode) GetOp added in v0.17.0

func (x *FilterNode) GetOp() string

func (*FilterNode) GetVal added in v0.17.0

func (x *FilterNode) GetVal() string

func (*FilterNode) GetVals added in v0.17.0

func (x *FilterNode) GetVals() []string

func (FilterNode) MarshalEasyJSON added in v0.17.0

func (v FilterNode) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*FilterNode) MarshalToSizedBufferVT added in v0.17.0

func (m *FilterNode) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*FilterNode) MarshalToVT added in v0.17.0

func (m *FilterNode) MarshalToVT(dAtA []byte) (int, error)

func (*FilterNode) MarshalVT added in v0.17.0

func (m *FilterNode) MarshalVT() (dAtA []byte, err error)

func (*FilterNode) ProtoMessage added in v0.17.0

func (*FilterNode) ProtoMessage()

func (*FilterNode) ProtoReflect added in v0.17.0

func (x *FilterNode) ProtoReflect() protoreflect.Message

func (*FilterNode) Reset added in v0.17.0

func (x *FilterNode) Reset()

func (*FilterNode) SizeVT added in v0.17.0

func (m *FilterNode) SizeVT() (n int)

func (*FilterNode) String added in v0.17.0

func (x *FilterNode) String() string

func (*FilterNode) UnmarshalEasyJSON added in v0.17.0

func (v *FilterNode) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*FilterNode) UnmarshalVT added in v0.17.0

func (m *FilterNode) UnmarshalVT(dAtA []byte) error

type FrameType added in v0.11.0

type FrameType uint8

FrameType describes the type of a protocol frame. It's not a part of the wire format – it's used for observability, so that a server may count and measure frames it sends and receives per type.

const (
	FrameTypeServerPing FrameType = iota + 1
	FrameTypeClientPong

	FrameTypePushConnect
	FrameTypePushSubscribe
	FrameTypePushPublication
	FrameTypePushJoin
	FrameTypePushLeave
	FrameTypePushUnsubscribe
	FrameTypePushMessage
	FrameTypePushRefresh
	FrameTypePushDisconnect

	FrameTypeConnect
	FrameTypeSubscribe
	FrameTypePublish
	FrameTypeUnsubscribe
	FrameTypeRPC
	FrameTypePresence
	FrameTypePresenceStats
	FrameTypeHistory
	FrameTypeRefresh
	FrameTypeSubRefresh
	FrameTypeSend
)

Frame types of the protocol: a ping/pong pair, asynchronous server-to-client pushes and client-to-server commands.

func (FrameType) String added in v0.11.0

func (f FrameType) String() string

String returns a snake_case name of the frame type, suitable for using as a metric label. It returns "unknown" for frame types not defined in this package.

type HistoryRequest

type HistoryRequest struct {
	Channel string          `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"`
	Limit   int32           `protobuf:"varint,7,opt,name=limit,proto3" json:"limit,omitempty"`
	Since   *StreamPosition `protobuf:"bytes,8,opt,name=since,proto3" json:"since,omitempty"`
	Reverse bool            `protobuf:"varint,9,opt,name=reverse,proto3" json:"reverse,omitempty"`
	// contains filtered or unexported fields
}

func (*HistoryRequest) Descriptor deprecated

func (*HistoryRequest) Descriptor() ([]byte, []int)

Deprecated: Use HistoryRequest.ProtoReflect.Descriptor instead.

func (*HistoryRequest) GetChannel

func (x *HistoryRequest) GetChannel() string

func (*HistoryRequest) GetLimit added in v0.3.5

func (x *HistoryRequest) GetLimit() int32

func (*HistoryRequest) GetReverse added in v0.7.1

func (x *HistoryRequest) GetReverse() bool

func (*HistoryRequest) GetSince added in v0.6.0

func (x *HistoryRequest) GetSince() *StreamPosition

func (HistoryRequest) MarshalEasyJSON added in v0.6.0

func (v HistoryRequest) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*HistoryRequest) MarshalToSizedBufferVT added in v0.7.0

func (m *HistoryRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*HistoryRequest) MarshalToVT added in v0.7.0

func (m *HistoryRequest) MarshalToVT(dAtA []byte) (int, error)

func (*HistoryRequest) MarshalVT added in v0.7.0

func (m *HistoryRequest) MarshalVT() (dAtA []byte, err error)

func (*HistoryRequest) ProtoMessage

func (*HistoryRequest) ProtoMessage()

func (*HistoryRequest) ProtoReflect added in v0.7.0

func (x *HistoryRequest) ProtoReflect() protoreflect.Message

func (*HistoryRequest) Reset

func (x *HistoryRequest) Reset()

func (*HistoryRequest) SizeVT added in v0.7.0

func (m *HistoryRequest) SizeVT() (n int)

func (*HistoryRequest) String

func (x *HistoryRequest) String() string

func (*HistoryRequest) UnmarshalEasyJSON added in v0.6.0

func (v *HistoryRequest) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*HistoryRequest) UnmarshalVT added in v0.7.0

func (m *HistoryRequest) UnmarshalVT(dAtA []byte) error

type HistoryResult

type HistoryResult struct {
	Publications []*Publication `protobuf:"bytes,1,rep,name=publications,proto3" json:"publications"`
	Epoch        string         `protobuf:"bytes,2,opt,name=epoch,proto3" json:"epoch"`
	Offset       uint64         `protobuf:"varint,3,opt,name=offset,proto3" json:"offset"`
	// contains filtered or unexported fields
}

func (*HistoryResult) Descriptor deprecated

func (*HistoryResult) Descriptor() ([]byte, []int)

Deprecated: Use HistoryResult.ProtoReflect.Descriptor instead.

func (*HistoryResult) GetEpoch added in v0.3.5

func (x *HistoryResult) GetEpoch() string

func (*HistoryResult) GetOffset added in v0.3.5

func (x *HistoryResult) GetOffset() uint64

func (*HistoryResult) GetPublications

func (x *HistoryResult) GetPublications() []*Publication

func (HistoryResult) MarshalEasyJSON added in v0.6.0

func (v HistoryResult) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*HistoryResult) MarshalToSizedBufferVT added in v0.7.0

func (m *HistoryResult) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*HistoryResult) MarshalToVT added in v0.7.0

func (m *HistoryResult) MarshalToVT(dAtA []byte) (int, error)

func (*HistoryResult) MarshalVT added in v0.7.0

func (m *HistoryResult) MarshalVT() (dAtA []byte, err error)

func (*HistoryResult) ProtoMessage

func (*HistoryResult) ProtoMessage()

func (*HistoryResult) ProtoReflect added in v0.7.0

func (x *HistoryResult) ProtoReflect() protoreflect.Message

func (*HistoryResult) Reset

func (x *HistoryResult) Reset()

func (*HistoryResult) SizeVT added in v0.7.0

func (m *HistoryResult) SizeVT() (n int)

func (*HistoryResult) String

func (x *HistoryResult) String() string

func (*HistoryResult) UnmarshalEasyJSON added in v0.6.0

func (v *HistoryResult) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*HistoryResult) UnmarshalVT added in v0.7.0

func (m *HistoryResult) UnmarshalVT(dAtA []byte) error

type JSONCommandDecoder

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

JSONCommandDecoder is a CommandDecoder for commands separated by a `\n` delimiter.

Decoding is zero-copy: string fields of the returned Command point into the frame passed to NewJSONCommandDecoder or Reset rather than into copies of it. The frame must therefore stay unmodified for as long as the decoded commands are used – do not hand decoded commands to another goroutine while reusing the read buffer they came from. Raw payload fields are copied and are not affected. The Protobuf decoders copy everything, so this applies to JSON only.

func NewJSONCommandDecoder

func NewJSONCommandDecoder(data []byte) *JSONCommandDecoder

NewJSONCommandDecoder creates a new JSONCommandDecoder for the given frame.

func (*JSONCommandDecoder) Decode

func (d *JSONCommandDecoder) Decode() (*Command, error)

Decode returns the next Command in the frame. The last Command is returned together with io.EOF, see the CommandDecoder interface.

func (*JSONCommandDecoder) Reset

func (d *JSONCommandDecoder) Reset(data []byte) error

Reset makes the decoder ready to decode commands from the given frame.

type JSONCommandEncoder

type JSONCommandEncoder struct {
}

JSONCommandEncoder is a CommandEncoder which encodes to JSON.

func NewJSONCommandEncoder

func NewJSONCommandEncoder() *JSONCommandEncoder

NewJSONCommandEncoder creates a new JSONCommandEncoder. It's safe to use the returned encoder concurrently.

func (*JSONCommandEncoder) Encode

func (e *JSONCommandEncoder) Encode(cmd *Command) ([]byte, error)

Encode Command to bytes. The result contains no framing: to send several commands in one frame join them with a `\n` delimiter, see JSONDataEncoder.

type JSONDataEncoder added in v0.4.0

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

JSONDataEncoder is a DataEncoder which separates messages by a `\n` delimiter.

func NewJSONDataEncoder added in v0.4.0

func NewJSONDataEncoder() *JSONDataEncoder

NewJSONDataEncoder creates a new JSONDataEncoder.

func (*JSONDataEncoder) Encode added in v0.4.0

func (e *JSONDataEncoder) Encode(data []byte) error

Encode appends an already encoded message to the frame, separating it from the previous one with a `\n` delimiter.

func (*JSONDataEncoder) Finish added in v0.4.0

func (e *JSONDataEncoder) Finish() []byte

Finish returns a copy of the frame built so far.

func (*JSONDataEncoder) FinishNoCopy added in v0.18.2

func (e *JSONDataEncoder) FinishNoCopy() []byte

FinishNoCopy returns the frame built so far without copying it, see the DataEncoder interface for the lifetime of the returned slice.

func (*JSONDataEncoder) Reset added in v0.4.0

func (e *JSONDataEncoder) Reset()

Reset prepares the encoder to build a new frame.

type JSONPushEncoder

type JSONPushEncoder struct {
}

JSONPushEncoder is a PushEncoder which encodes to JSON.

func NewJSONPushEncoder

func NewJSONPushEncoder() *JSONPushEncoder

NewJSONPushEncoder creates a new JSONPushEncoder. It's safe to use the returned encoder concurrently, see also DefaultJsonPushEncoder.

func (*JSONPushEncoder) Encode

func (e *JSONPushEncoder) Encode(message *Push) ([]byte, error)

Encode Push to bytes.

func (*JSONPushEncoder) EncodeConnect added in v0.4.0

func (e *JSONPushEncoder) EncodeConnect(message *Connect, reuse ...[]byte) ([]byte, error)

EncodeConnect to bytes.

func (*JSONPushEncoder) EncodeDisconnect added in v0.4.0

func (e *JSONPushEncoder) EncodeDisconnect(message *Disconnect, reuse ...[]byte) ([]byte, error)

EncodeDisconnect to bytes.

func (*JSONPushEncoder) EncodeJoin

func (e *JSONPushEncoder) EncodeJoin(message *Join, reuse ...[]byte) ([]byte, error)

EncodeJoin to bytes.

func (*JSONPushEncoder) EncodeLeave

func (e *JSONPushEncoder) EncodeLeave(message *Leave, reuse ...[]byte) ([]byte, error)

EncodeLeave to bytes.

func (*JSONPushEncoder) EncodeMessage

func (e *JSONPushEncoder) EncodeMessage(message *Message, reuse ...[]byte) ([]byte, error)

EncodeMessage to bytes.

func (*JSONPushEncoder) EncodePublication

func (e *JSONPushEncoder) EncodePublication(message *Publication, reuse ...[]byte) ([]byte, error)

EncodePublication to bytes.

func (*JSONPushEncoder) EncodeRefresh added in v0.6.0

func (e *JSONPushEncoder) EncodeRefresh(message *Refresh, reuse ...[]byte) ([]byte, error)

EncodeRefresh to bytes.

func (*JSONPushEncoder) EncodeSubscribe added in v0.4.0

func (e *JSONPushEncoder) EncodeSubscribe(message *Subscribe, reuse ...[]byte) ([]byte, error)

EncodeSubscribe to bytes.

func (*JSONPushEncoder) EncodeUnsubscribe added in v0.4.0

func (e *JSONPushEncoder) EncodeUnsubscribe(message *Unsubscribe, reuse ...[]byte) ([]byte, error)

EncodeUnsubscribe to bytes.

type JSONReplyDecoder

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

JSONReplyDecoder is a ReplyDecoder which reads a stream of JSON replies, such as the `\n` separated frame produced by JSONDataEncoder.

func NewJSONReplyDecoder

func NewJSONReplyDecoder(data []byte) *JSONReplyDecoder

NewJSONReplyDecoder creates a new JSONReplyDecoder for the given frame.

func (*JSONReplyDecoder) Decode

func (d *JSONReplyDecoder) Decode() (*Reply, error)

Decode returns the next Reply in the frame, or io.EOF if there are no replies left.

func (*JSONReplyDecoder) Reset

func (d *JSONReplyDecoder) Reset(data []byte) error

Reset makes the decoder ready to decode replies from the given frame.

type JSONReplyEncoder

type JSONReplyEncoder struct{}

JSONReplyEncoder is a ReplyEncoder which encodes to JSON.

func NewJSONReplyEncoder

func NewJSONReplyEncoder() *JSONReplyEncoder

NewJSONReplyEncoder creates a new JSONReplyEncoder. It's safe to use the returned encoder concurrently, see also DefaultJsonReplyEncoder.

func (*JSONReplyEncoder) Encode

func (e *JSONReplyEncoder) Encode(r *Reply) ([]byte, error)

Encode Reply to bytes.

type JSONResultEncoder

type JSONResultEncoder struct{}

JSONResultEncoder is a ResultEncoder which encodes to JSON.

func NewJSONResultEncoder

func NewJSONResultEncoder() *JSONResultEncoder

NewJSONResultEncoder creates a new JSONResultEncoder. It's safe to use the returned encoder concurrently.

func (*JSONResultEncoder) EncodeConnectResult

func (e *JSONResultEncoder) EncodeConnectResult(res *ConnectResult) ([]byte, error)

EncodeConnectResult encodes ConnectResult to bytes.

func (*JSONResultEncoder) EncodeHistoryResult

func (e *JSONResultEncoder) EncodeHistoryResult(res *HistoryResult) ([]byte, error)

EncodeHistoryResult encodes HistoryResult to bytes.

func (*JSONResultEncoder) EncodePingResult

func (e *JSONResultEncoder) EncodePingResult(res *PingResult) ([]byte, error)

EncodePingResult encodes PingResult to bytes.

func (*JSONResultEncoder) EncodePresenceResult

func (e *JSONResultEncoder) EncodePresenceResult(res *PresenceResult) ([]byte, error)

EncodePresenceResult encodes PresenceResult to bytes.

func (*JSONResultEncoder) EncodePresenceStatsResult

func (e *JSONResultEncoder) EncodePresenceStatsResult(res *PresenceStatsResult) ([]byte, error)

EncodePresenceStatsResult encodes PresenceStatsResult to bytes.

func (*JSONResultEncoder) EncodePublishResult

func (e *JSONResultEncoder) EncodePublishResult(res *PublishResult) ([]byte, error)

EncodePublishResult encodes PublishResult to bytes.

func (*JSONResultEncoder) EncodeRPCResult

func (e *JSONResultEncoder) EncodeRPCResult(res *RPCResult) ([]byte, error)

EncodeRPCResult encodes RPCResult to bytes.

func (*JSONResultEncoder) EncodeRefreshResult

func (e *JSONResultEncoder) EncodeRefreshResult(res *RefreshResult) ([]byte, error)

EncodeRefreshResult encodes RefreshResult to bytes.

func (*JSONResultEncoder) EncodeSubRefreshResult

func (e *JSONResultEncoder) EncodeSubRefreshResult(res *SubRefreshResult) ([]byte, error)

EncodeSubRefreshResult encodes SubRefreshResult to bytes.

func (*JSONResultEncoder) EncodeSubscribeResult

func (e *JSONResultEncoder) EncodeSubscribeResult(res *SubscribeResult) ([]byte, error)

EncodeSubscribeResult encodes SubscribeResult to bytes.

func (*JSONResultEncoder) EncodeUnsubscribeResult

func (e *JSONResultEncoder) EncodeUnsubscribeResult(res *UnsubscribeResult) ([]byte, error)

EncodeUnsubscribeResult encodes UnsubscribeResult to bytes.

type JSONStreamCommandDecoder added in v0.8.10

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

JSONStreamCommandDecoder is a StreamCommandDecoder which reads commands separated by a `\n` delimiter.

func NewJSONStreamCommandDecoder added in v0.8.10

func NewJSONStreamCommandDecoder(reader io.Reader, messageSizeLimit int64) *JSONStreamCommandDecoder

NewJSONStreamCommandDecoder creates a new JSONStreamCommandDecoder reading from reader. messageSizeLimit must be positive; a zero or negative value panics.

func (*JSONStreamCommandDecoder) Decode added in v0.8.10

func (d *JSONStreamCommandDecoder) Decode() (*Command, int, error)

Decode returns the next Command from the stream, see the StreamCommandDecoder interface.

func (*JSONStreamCommandDecoder) Reset added in v0.9.0

func (d *JSONStreamCommandDecoder) Reset(reader io.Reader, messageSizeLimit int64)

Reset makes the decoder read from the given reader, applying the given message size limit.

type Join

type Join struct {
	Info *ClientInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"`
	// contains filtered or unexported fields
}

Join to channel.

func (*Join) Descriptor deprecated

func (*Join) Descriptor() ([]byte, []int)

Deprecated: Use Join.ProtoReflect.Descriptor instead.

func (*Join) GetInfo

func (x *Join) GetInfo() *ClientInfo

func (Join) MarshalEasyJSON added in v0.6.0

func (v Join) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*Join) MarshalToSizedBufferVT added in v0.7.0

func (m *Join) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*Join) MarshalToVT added in v0.7.0

func (m *Join) MarshalToVT(dAtA []byte) (int, error)

func (*Join) MarshalVT added in v0.7.0

func (m *Join) MarshalVT() (dAtA []byte, err error)

func (*Join) ProtoMessage

func (*Join) ProtoMessage()

func (*Join) ProtoReflect added in v0.7.0

func (x *Join) ProtoReflect() protoreflect.Message

func (*Join) Reset

func (x *Join) Reset()

func (*Join) SizeVT added in v0.7.0

func (m *Join) SizeVT() (n int)

func (*Join) String

func (x *Join) String() string

func (*Join) UnmarshalEasyJSON added in v0.6.0

func (v *Join) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*Join) UnmarshalVT added in v0.7.0

func (m *Join) UnmarshalVT(dAtA []byte) error

type KeyedItem added in v0.19.0

type KeyedItem struct {
	Key     string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	Version uint64 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"`
	// contains filtered or unexported fields
}

func (*KeyedItem) Descriptor deprecated added in v0.19.0

func (*KeyedItem) Descriptor() ([]byte, []int)

Deprecated: Use KeyedItem.ProtoReflect.Descriptor instead.

func (*KeyedItem) GetKey added in v0.19.0

func (x *KeyedItem) GetKey() string

func (*KeyedItem) GetVersion added in v0.19.0

func (x *KeyedItem) GetVersion() uint64

func (KeyedItem) MarshalEasyJSON added in v0.19.0

func (v KeyedItem) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*KeyedItem) MarshalToSizedBufferVT added in v0.19.0

func (m *KeyedItem) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*KeyedItem) MarshalToVT added in v0.19.0

func (m *KeyedItem) MarshalToVT(dAtA []byte) (int, error)

func (*KeyedItem) MarshalVT added in v0.19.0

func (m *KeyedItem) MarshalVT() (dAtA []byte, err error)

func (*KeyedItem) ProtoMessage added in v0.19.0

func (*KeyedItem) ProtoMessage()

func (*KeyedItem) ProtoReflect added in v0.19.0

func (x *KeyedItem) ProtoReflect() protoreflect.Message

func (*KeyedItem) Reset added in v0.19.0

func (x *KeyedItem) Reset()

func (*KeyedItem) SizeVT added in v0.19.0

func (m *KeyedItem) SizeVT() (n int)

func (*KeyedItem) String added in v0.19.0

func (x *KeyedItem) String() string

func (*KeyedItem) UnmarshalEasyJSON added in v0.19.0

func (v *KeyedItem) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*KeyedItem) UnmarshalVT added in v0.19.0

func (m *KeyedItem) UnmarshalVT(dAtA []byte) error

type Leave

type Leave struct {
	Info *ClientInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"`
	// contains filtered or unexported fields
}

Leave from channel.

func (*Leave) Descriptor deprecated

func (*Leave) Descriptor() ([]byte, []int)

Deprecated: Use Leave.ProtoReflect.Descriptor instead.

func (*Leave) GetInfo

func (x *Leave) GetInfo() *ClientInfo

func (Leave) MarshalEasyJSON added in v0.6.0

func (v Leave) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*Leave) MarshalToSizedBufferVT added in v0.7.0

func (m *Leave) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*Leave) MarshalToVT added in v0.7.0

func (m *Leave) MarshalToVT(dAtA []byte) (int, error)

func (*Leave) MarshalVT added in v0.7.0

func (m *Leave) MarshalVT() (dAtA []byte, err error)

func (*Leave) ProtoMessage

func (*Leave) ProtoMessage()

func (*Leave) ProtoReflect added in v0.7.0

func (x *Leave) ProtoReflect() protoreflect.Message

func (*Leave) Reset

func (x *Leave) Reset()

func (*Leave) SizeVT added in v0.7.0

func (m *Leave) SizeVT() (n int)

func (*Leave) String

func (x *Leave) String() string

func (*Leave) UnmarshalEasyJSON added in v0.6.0

func (v *Leave) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*Leave) UnmarshalVT added in v0.7.0

func (m *Leave) UnmarshalVT(dAtA []byte) error

type Message

type Message struct {
	Data Raw `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	// contains filtered or unexported fields
}

Message from client to server. No Reply is sent in response to Message.

func (*Message) Descriptor deprecated

func (*Message) Descriptor() ([]byte, []int)

Deprecated: Use Message.ProtoReflect.Descriptor instead.

func (*Message) GetData added in v0.7.0

func (x *Message) GetData() []byte

func (Message) MarshalEasyJSON added in v0.6.0

func (v Message) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*Message) MarshalToSizedBufferVT added in v0.7.0

func (m *Message) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*Message) MarshalToVT added in v0.7.0

func (m *Message) MarshalToVT(dAtA []byte) (int, error)

func (*Message) MarshalVT added in v0.7.0

func (m *Message) MarshalVT() (dAtA []byte, err error)

func (*Message) ProtoMessage

func (*Message) ProtoMessage()

func (*Message) ProtoReflect added in v0.7.0

func (x *Message) ProtoReflect() protoreflect.Message

func (*Message) Reset

func (x *Message) Reset()

func (*Message) SizeVT added in v0.7.0

func (m *Message) SizeVT() (n int)

func (*Message) String

func (x *Message) String() string

func (*Message) UnmarshalEasyJSON added in v0.6.0

func (v *Message) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*Message) UnmarshalVT added in v0.7.0

func (m *Message) UnmarshalVT(dAtA []byte) error

type PingRequest

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

func (*PingRequest) Descriptor deprecated

func (*PingRequest) Descriptor() ([]byte, []int)

Deprecated: Use PingRequest.ProtoReflect.Descriptor instead.

func (PingRequest) MarshalEasyJSON added in v0.6.0

func (v PingRequest) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*PingRequest) MarshalToSizedBufferVT added in v0.7.0

func (m *PingRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*PingRequest) MarshalToVT added in v0.7.0

func (m *PingRequest) MarshalToVT(dAtA []byte) (int, error)

func (*PingRequest) MarshalVT added in v0.7.0

func (m *PingRequest) MarshalVT() (dAtA []byte, err error)

func (*PingRequest) ProtoMessage

func (*PingRequest) ProtoMessage()

func (*PingRequest) ProtoReflect added in v0.7.0

func (x *PingRequest) ProtoReflect() protoreflect.Message

func (*PingRequest) Reset

func (x *PingRequest) Reset()

func (*PingRequest) SizeVT added in v0.7.0

func (m *PingRequest) SizeVT() (n int)

func (*PingRequest) String

func (x *PingRequest) String() string

func (*PingRequest) UnmarshalEasyJSON added in v0.6.0

func (v *PingRequest) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*PingRequest) UnmarshalVT added in v0.7.0

func (m *PingRequest) UnmarshalVT(dAtA []byte) error

type PingResult

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

func (*PingResult) Descriptor deprecated

func (*PingResult) Descriptor() ([]byte, []int)

Deprecated: Use PingResult.ProtoReflect.Descriptor instead.

func (PingResult) MarshalEasyJSON added in v0.6.0

func (v PingResult) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*PingResult) MarshalToSizedBufferVT added in v0.7.0

func (m *PingResult) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*PingResult) MarshalToVT added in v0.7.0

func (m *PingResult) MarshalToVT(dAtA []byte) (int, error)

func (*PingResult) MarshalVT added in v0.7.0

func (m *PingResult) MarshalVT() (dAtA []byte, err error)

func (*PingResult) ProtoMessage

func (*PingResult) ProtoMessage()

func (*PingResult) ProtoReflect added in v0.7.0

func (x *PingResult) ProtoReflect() protoreflect.Message

func (*PingResult) Reset

func (x *PingResult) Reset()

func (*PingResult) SizeVT added in v0.7.0

func (m *PingResult) SizeVT() (n int)

func (*PingResult) String

func (x *PingResult) String() string

func (*PingResult) UnmarshalEasyJSON added in v0.6.0

func (v *PingResult) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*PingResult) UnmarshalVT added in v0.7.0

func (m *PingResult) UnmarshalVT(dAtA []byte) error

type PresenceRequest

type PresenceRequest struct {
	Channel string `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"`
	// contains filtered or unexported fields
}

func (*PresenceRequest) Descriptor deprecated

func (*PresenceRequest) Descriptor() ([]byte, []int)

Deprecated: Use PresenceRequest.ProtoReflect.Descriptor instead.

func (*PresenceRequest) GetChannel

func (x *PresenceRequest) GetChannel() string

func (PresenceRequest) MarshalEasyJSON added in v0.6.0

func (v PresenceRequest) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*PresenceRequest) MarshalToSizedBufferVT added in v0.7.0

func (m *PresenceRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*PresenceRequest) MarshalToVT added in v0.7.0

func (m *PresenceRequest) MarshalToVT(dAtA []byte) (int, error)

func (*PresenceRequest) MarshalVT added in v0.7.0

func (m *PresenceRequest) MarshalVT() (dAtA []byte, err error)

func (*PresenceRequest) ProtoMessage

func (*PresenceRequest) ProtoMessage()

func (*PresenceRequest) ProtoReflect added in v0.7.0

func (x *PresenceRequest) ProtoReflect() protoreflect.Message

func (*PresenceRequest) Reset

func (x *PresenceRequest) Reset()

func (*PresenceRequest) SizeVT added in v0.7.0

func (m *PresenceRequest) SizeVT() (n int)

func (*PresenceRequest) String

func (x *PresenceRequest) String() string

func (*PresenceRequest) UnmarshalEasyJSON added in v0.6.0

func (v *PresenceRequest) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*PresenceRequest) UnmarshalVT added in v0.7.0

func (m *PresenceRequest) UnmarshalVT(dAtA []byte) error

type PresenceResult

type PresenceResult struct {
	Presence map[string]*ClientInfo `` /* 133-byte string literal not displayed */
	// contains filtered or unexported fields
}

func (*PresenceResult) Descriptor deprecated

func (*PresenceResult) Descriptor() ([]byte, []int)

Deprecated: Use PresenceResult.ProtoReflect.Descriptor instead.

func (*PresenceResult) GetPresence

func (x *PresenceResult) GetPresence() map[string]*ClientInfo

func (PresenceResult) MarshalEasyJSON added in v0.6.0

func (v PresenceResult) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*PresenceResult) MarshalToSizedBufferVT added in v0.7.0

func (m *PresenceResult) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*PresenceResult) MarshalToVT added in v0.7.0

func (m *PresenceResult) MarshalToVT(dAtA []byte) (int, error)

func (*PresenceResult) MarshalVT added in v0.7.0

func (m *PresenceResult) MarshalVT() (dAtA []byte, err error)

func (*PresenceResult) ProtoMessage

func (*PresenceResult) ProtoMessage()

func (*PresenceResult) ProtoReflect added in v0.7.0

func (x *PresenceResult) ProtoReflect() protoreflect.Message

func (*PresenceResult) Reset

func (x *PresenceResult) Reset()

func (*PresenceResult) SizeVT added in v0.7.0

func (m *PresenceResult) SizeVT() (n int)

func (*PresenceResult) String

func (x *PresenceResult) String() string

func (*PresenceResult) UnmarshalEasyJSON added in v0.6.0

func (v *PresenceResult) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*PresenceResult) UnmarshalVT added in v0.7.0

func (m *PresenceResult) UnmarshalVT(dAtA []byte) error

type PresenceStatsRequest

type PresenceStatsRequest struct {
	Channel string `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"`
	// contains filtered or unexported fields
}

func (*PresenceStatsRequest) Descriptor deprecated

func (*PresenceStatsRequest) Descriptor() ([]byte, []int)

Deprecated: Use PresenceStatsRequest.ProtoReflect.Descriptor instead.

func (*PresenceStatsRequest) GetChannel

func (x *PresenceStatsRequest) GetChannel() string

func (PresenceStatsRequest) MarshalEasyJSON added in v0.6.0

func (v PresenceStatsRequest) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*PresenceStatsRequest) MarshalToSizedBufferVT added in v0.7.0

func (m *PresenceStatsRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*PresenceStatsRequest) MarshalToVT added in v0.7.0

func (m *PresenceStatsRequest) MarshalToVT(dAtA []byte) (int, error)

func (*PresenceStatsRequest) MarshalVT added in v0.7.0

func (m *PresenceStatsRequest) MarshalVT() (dAtA []byte, err error)

func (*PresenceStatsRequest) ProtoMessage

func (*PresenceStatsRequest) ProtoMessage()

func (*PresenceStatsRequest) ProtoReflect added in v0.7.0

func (x *PresenceStatsRequest) ProtoReflect() protoreflect.Message

func (*PresenceStatsRequest) Reset

func (x *PresenceStatsRequest) Reset()

func (*PresenceStatsRequest) SizeVT added in v0.7.0

func (m *PresenceStatsRequest) SizeVT() (n int)

func (*PresenceStatsRequest) String

func (x *PresenceStatsRequest) String() string

func (*PresenceStatsRequest) UnmarshalEasyJSON added in v0.6.0

func (v *PresenceStatsRequest) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*PresenceStatsRequest) UnmarshalVT added in v0.7.0

func (m *PresenceStatsRequest) UnmarshalVT(dAtA []byte) error

type PresenceStatsResult

type PresenceStatsResult struct {
	NumClients uint32 `protobuf:"varint,1,opt,name=num_clients,json=numClients,proto3" json:"num_clients"`
	NumUsers   uint32 `protobuf:"varint,2,opt,name=num_users,json=numUsers,proto3" json:"num_users"`
	// contains filtered or unexported fields
}

func (*PresenceStatsResult) Descriptor deprecated

func (*PresenceStatsResult) Descriptor() ([]byte, []int)

Deprecated: Use PresenceStatsResult.ProtoReflect.Descriptor instead.

func (*PresenceStatsResult) GetNumClients

func (x *PresenceStatsResult) GetNumClients() uint32

func (*PresenceStatsResult) GetNumUsers

func (x *PresenceStatsResult) GetNumUsers() uint32

func (PresenceStatsResult) MarshalEasyJSON added in v0.6.0

func (v PresenceStatsResult) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*PresenceStatsResult) MarshalToSizedBufferVT added in v0.7.0

func (m *PresenceStatsResult) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*PresenceStatsResult) MarshalToVT added in v0.7.0

func (m *PresenceStatsResult) MarshalToVT(dAtA []byte) (int, error)

func (*PresenceStatsResult) MarshalVT added in v0.7.0

func (m *PresenceStatsResult) MarshalVT() (dAtA []byte, err error)

func (*PresenceStatsResult) ProtoMessage

func (*PresenceStatsResult) ProtoMessage()

func (*PresenceStatsResult) ProtoReflect added in v0.7.0

func (x *PresenceStatsResult) ProtoReflect() protoreflect.Message

func (*PresenceStatsResult) Reset

func (x *PresenceStatsResult) Reset()

func (*PresenceStatsResult) SizeVT added in v0.7.0

func (m *PresenceStatsResult) SizeVT() (n int)

func (*PresenceStatsResult) String

func (x *PresenceStatsResult) String() string

func (*PresenceStatsResult) UnmarshalEasyJSON added in v0.6.0

func (v *PresenceStatsResult) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*PresenceStatsResult) UnmarshalVT added in v0.7.0

func (m *PresenceStatsResult) UnmarshalVT(dAtA []byte) error

type ProtobufCommandDecoder

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

ProtobufCommandDecoder is a CommandDecoder for commands prefixed with their length encoded as a varint.

func NewProtobufCommandDecoder

func NewProtobufCommandDecoder(data []byte) *ProtobufCommandDecoder

NewProtobufCommandDecoder creates a new ProtobufCommandDecoder for the given frame.

func (*ProtobufCommandDecoder) Decode

func (d *ProtobufCommandDecoder) Decode() (*Command, error)

Decode returns the next Command in the frame. The last Command is returned together with io.EOF, see the CommandDecoder interface.

func (*ProtobufCommandDecoder) Reset

func (d *ProtobufCommandDecoder) Reset(data []byte) error

Reset makes the decoder ready to decode commands from the given frame.

type ProtobufCommandEncoder

type ProtobufCommandEncoder struct {
}

ProtobufCommandEncoder is a CommandEncoder which encodes to Protobuf.

func NewProtobufCommandEncoder

func NewProtobufCommandEncoder() *ProtobufCommandEncoder

NewProtobufCommandEncoder creates a new ProtobufCommandEncoder. It's safe to use the returned encoder concurrently.

func (*ProtobufCommandEncoder) Encode

func (e *ProtobufCommandEncoder) Encode(cmd *Command) ([]byte, error)

Encode Command to bytes prefixed with the command length encoded as a varint, so that encoded commands may be sent one after another in a single frame.

type ProtobufDataEncoder added in v0.4.0

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

ProtobufDataEncoder is a DataEncoder which prefixes each message with its length encoded as a varint.

func NewProtobufDataEncoder added in v0.4.0

func NewProtobufDataEncoder() *ProtobufDataEncoder

NewProtobufDataEncoder creates a new ProtobufDataEncoder.

func (*ProtobufDataEncoder) Encode added in v0.4.0

func (e *ProtobufDataEncoder) Encode(data []byte) error

Encode appends an already encoded message to the frame, prefixing it with its length encoded as a varint.

func (*ProtobufDataEncoder) Finish added in v0.4.0

func (e *ProtobufDataEncoder) Finish() []byte

Finish returns a copy of the frame built so far.

func (*ProtobufDataEncoder) FinishNoCopy added in v0.18.2

func (e *ProtobufDataEncoder) FinishNoCopy() []byte

FinishNoCopy returns the frame built so far without copying it, see the DataEncoder interface for the lifetime of the returned slice.

func (*ProtobufDataEncoder) Reset added in v0.4.0

func (e *ProtobufDataEncoder) Reset()

Reset prepares the encoder to build a new frame.

type ProtobufPushEncoder

type ProtobufPushEncoder struct {
}

ProtobufPushEncoder is a PushEncoder which encodes to Protobuf.

func NewProtobufPushEncoder

func NewProtobufPushEncoder() *ProtobufPushEncoder

NewProtobufPushEncoder creates a new ProtobufPushEncoder. It's safe to use the returned encoder concurrently, see also DefaultProtobufPushEncoder.

func (*ProtobufPushEncoder) Encode

func (e *ProtobufPushEncoder) Encode(message *Push) ([]byte, error)

Encode Push to bytes.

func (*ProtobufPushEncoder) EncodeConnect added in v0.4.0

func (e *ProtobufPushEncoder) EncodeConnect(message *Connect, reuse ...[]byte) ([]byte, error)

EncodeConnect to bytes.

func (*ProtobufPushEncoder) EncodeDisconnect added in v0.4.0

func (e *ProtobufPushEncoder) EncodeDisconnect(message *Disconnect, reuse ...[]byte) ([]byte, error)

EncodeDisconnect to bytes.

func (*ProtobufPushEncoder) EncodeJoin

func (e *ProtobufPushEncoder) EncodeJoin(message *Join, reuse ...[]byte) ([]byte, error)

EncodeJoin to bytes.

func (*ProtobufPushEncoder) EncodeLeave

func (e *ProtobufPushEncoder) EncodeLeave(message *Leave, reuse ...[]byte) ([]byte, error)

EncodeLeave to bytes.

func (*ProtobufPushEncoder) EncodeMessage

func (e *ProtobufPushEncoder) EncodeMessage(message *Message, reuse ...[]byte) ([]byte, error)

EncodeMessage to bytes.

func (*ProtobufPushEncoder) EncodePublication

func (e *ProtobufPushEncoder) EncodePublication(message *Publication, reuse ...[]byte) ([]byte, error)

EncodePublication to bytes.

func (*ProtobufPushEncoder) EncodeRefresh added in v0.6.0

func (e *ProtobufPushEncoder) EncodeRefresh(message *Refresh, reuse ...[]byte) ([]byte, error)

EncodeRefresh to bytes.

func (*ProtobufPushEncoder) EncodeSubscribe added in v0.4.0

func (e *ProtobufPushEncoder) EncodeSubscribe(message *Subscribe, reuse ...[]byte) ([]byte, error)

EncodeSubscribe to bytes.

func (*ProtobufPushEncoder) EncodeUnsubscribe added in v0.4.0

func (e *ProtobufPushEncoder) EncodeUnsubscribe(message *Unsubscribe, reuse ...[]byte) ([]byte, error)

EncodeUnsubscribe to bytes.

type ProtobufReplyDecoder

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

ProtobufReplyDecoder is a ReplyDecoder for replies prefixed with their length encoded as a varint.

func NewProtobufReplyDecoder

func NewProtobufReplyDecoder(data []byte) *ProtobufReplyDecoder

NewProtobufReplyDecoder creates a new ProtobufReplyDecoder for the given frame.

func (*ProtobufReplyDecoder) Decode

func (d *ProtobufReplyDecoder) Decode() (*Reply, error)

Decode returns the next Reply in the frame, or io.EOF if there are no replies left. It returns io.ErrShortBuffer if a length prefix does not match the data which follows it.

func (*ProtobufReplyDecoder) Reset

func (d *ProtobufReplyDecoder) Reset(data []byte) error

Reset makes the decoder ready to decode replies from the given frame.

type ProtobufReplyEncoder

type ProtobufReplyEncoder struct{}

ProtobufReplyEncoder is a ReplyEncoder which encodes to Protobuf.

func NewProtobufReplyEncoder

func NewProtobufReplyEncoder() *ProtobufReplyEncoder

NewProtobufReplyEncoder creates a new ProtobufReplyEncoder. It's safe to use the returned encoder concurrently, see also DefaultProtobufReplyEncoder.

func (*ProtobufReplyEncoder) Encode

func (e *ProtobufReplyEncoder) Encode(r *Reply) ([]byte, error)

Encode Reply to bytes.

type ProtobufResultEncoder

type ProtobufResultEncoder struct{}

ProtobufResultEncoder is a ResultEncoder which encodes to Protobuf.

func NewProtobufResultEncoder

func NewProtobufResultEncoder() *ProtobufResultEncoder

NewProtobufResultEncoder creates a new ProtobufResultEncoder. It's safe to use the returned encoder concurrently.

func (*ProtobufResultEncoder) EncodeConnectResult

func (e *ProtobufResultEncoder) EncodeConnectResult(res *ConnectResult) ([]byte, error)

EncodeConnectResult encodes ConnectResult to bytes.

func (*ProtobufResultEncoder) EncodeHistoryResult

func (e *ProtobufResultEncoder) EncodeHistoryResult(res *HistoryResult) ([]byte, error)

EncodeHistoryResult encodes HistoryResult to bytes.

func (*ProtobufResultEncoder) EncodePingResult

func (e *ProtobufResultEncoder) EncodePingResult(res *PingResult) ([]byte, error)

EncodePingResult encodes PingResult to bytes.

func (*ProtobufResultEncoder) EncodePresenceResult

func (e *ProtobufResultEncoder) EncodePresenceResult(res *PresenceResult) ([]byte, error)

EncodePresenceResult encodes PresenceResult to bytes.

func (*ProtobufResultEncoder) EncodePresenceStatsResult

func (e *ProtobufResultEncoder) EncodePresenceStatsResult(res *PresenceStatsResult) ([]byte, error)

EncodePresenceStatsResult encodes PresenceStatsResult to bytes.

func (*ProtobufResultEncoder) EncodePublishResult

func (e *ProtobufResultEncoder) EncodePublishResult(res *PublishResult) ([]byte, error)

EncodePublishResult encodes PublishResult to bytes.

func (*ProtobufResultEncoder) EncodeRPCResult

func (e *ProtobufResultEncoder) EncodeRPCResult(res *RPCResult) ([]byte, error)

EncodeRPCResult encodes RPCResult to bytes.

func (*ProtobufResultEncoder) EncodeRefreshResult

func (e *ProtobufResultEncoder) EncodeRefreshResult(res *RefreshResult) ([]byte, error)

EncodeRefreshResult encodes RefreshResult to bytes.

func (*ProtobufResultEncoder) EncodeSubRefreshResult

func (e *ProtobufResultEncoder) EncodeSubRefreshResult(res *SubRefreshResult) ([]byte, error)

EncodeSubRefreshResult encodes SubRefreshResult to bytes.

func (*ProtobufResultEncoder) EncodeSubscribeResult

func (e *ProtobufResultEncoder) EncodeSubscribeResult(res *SubscribeResult) ([]byte, error)

EncodeSubscribeResult encodes SubscribeResult to bytes.

func (*ProtobufResultEncoder) EncodeUnsubscribeResult

func (e *ProtobufResultEncoder) EncodeUnsubscribeResult(res *UnsubscribeResult) ([]byte, error)

EncodeUnsubscribeResult encodes UnsubscribeResult to bytes.

type ProtobufStreamCommandDecoder added in v0.8.10

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

ProtobufStreamCommandDecoder is a StreamCommandDecoder which reads commands prefixed with their length encoded as a varint.

func NewProtobufStreamCommandDecoder added in v0.8.10

func NewProtobufStreamCommandDecoder(reader io.Reader, messageSizeLimit int64) *ProtobufStreamCommandDecoder

NewProtobufStreamCommandDecoder creates a new ProtobufStreamCommandDecoder reading from reader. messageSizeLimit must be positive; a zero or negative value panics, since the varint length prefix is attacker-controlled and used as an allocation size, so an unbounded decoder over untrusted input is a memory-exhaustion hazard.

func (*ProtobufStreamCommandDecoder) Decode added in v0.8.10

func (d *ProtobufStreamCommandDecoder) Decode() (*Command, int, error)

Decode returns the next Command from the stream, see the StreamCommandDecoder interface. The size limit is checked against the length prefix before the command is read, so an oversized command is rejected without buffering it.

func (*ProtobufStreamCommandDecoder) Reset added in v0.9.0

func (d *ProtobufStreamCommandDecoder) Reset(reader io.Reader, messageSizeLimit int64)

Reset makes the decoder read from the given reader, applying the given message size limit.

type Publication

type Publication struct {
	Data   Raw               `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`      // Data contains publication payload.
	Info   *ClientInfo       `protobuf:"bytes,5,opt,name=info,proto3" json:"info,omitempty"`      // Info contains optional information about publisher. Usually it is set only if publication goes from the client side.
	Offset uint64            `protobuf:"varint,6,opt,name=offset,proto3" json:"offset,omitempty"` // Offset is a stream offset of the publication. Epoch is given in SubscribeResult.
	Tags   map[string]string ``                                                                   // Optional tags associated with publication.
	/* 135-byte string literal not displayed */
	Delta    bool   `protobuf:"varint,8,opt,name=delta,proto3" json:"delta,omitempty"`                       // When set indicates that data in Publication is a delta from previous data.
	Time     int64  `protobuf:"varint,9,opt,name=time,proto3" json:"time,omitempty"`                         // Optional time of publication as Unix timestamp milliseconds.
	Channel  string `protobuf:"bytes,10,opt,name=channel,proto3" json:"channel,omitempty"`                   // Optional channel name if Publication relates to wildcard subscription.
	Key      string `protobuf:"bytes,11,opt,name=key,proto3" json:"key,omitempty"`                           // Optional key associated with publication.
	Removed  bool   `protobuf:"varint,12,opt,name=removed,proto3" json:"removed,omitempty"`                  // When set indicates that this publication is a removal of a previously published item.
	Score    int64  `protobuf:"zigzag64,13,opt,name=score,proto3" json:"score,omitempty"`                    // Represents score to order.
	Epoch    string `protobuf:"bytes,14,opt,name=epoch,proto3" json:"epoch,omitempty"`                       // Optional epoch.
	PrevData Raw    `protobuf:"bytes,15,opt,name=prev_data,json=prevData,proto3" json:"prev_data,omitempty"` // Previous data for delta computation in broker fan-out.
	Version  uint64 `protobuf:"varint,16,opt,name=version,proto3" json:"version,omitempty"`
	// contains filtered or unexported fields
}

Publication in channel.

func (*Publication) Descriptor deprecated

func (*Publication) Descriptor() ([]byte, []int)

Deprecated: Use Publication.ProtoReflect.Descriptor instead.

func (*Publication) GetChannel added in v0.13.4

func (x *Publication) GetChannel() string

func (*Publication) GetData added in v0.7.0

func (x *Publication) GetData() []byte

func (*Publication) GetDelta added in v0.13.0

func (x *Publication) GetDelta() bool

func (*Publication) GetEpoch added in v0.19.0

func (x *Publication) GetEpoch() string

func (*Publication) GetInfo

func (x *Publication) GetInfo() *ClientInfo

func (*Publication) GetKey added in v0.19.0

func (x *Publication) GetKey() string

func (*Publication) GetOffset

func (x *Publication) GetOffset() uint64

func (*Publication) GetPrevData added in v0.19.0

func (x *Publication) GetPrevData() []byte

func (*Publication) GetRemoved added in v0.19.0

func (x *Publication) GetRemoved() bool

func (*Publication) GetScore added in v0.19.0

func (x *Publication) GetScore() int64

func (*Publication) GetTags added in v0.8.1

func (x *Publication) GetTags() map[string]string

func (*Publication) GetTime added in v0.13.3

func (x *Publication) GetTime() int64

func (*Publication) GetVersion added in v0.19.0

func (x *Publication) GetVersion() uint64

func (Publication) MarshalEasyJSON added in v0.6.0

func (v Publication) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*Publication) MarshalToSizedBufferVT added in v0.7.0

func (m *Publication) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*Publication) MarshalToVT added in v0.7.0

func (m *Publication) MarshalToVT(dAtA []byte) (int, error)

func (*Publication) MarshalVT added in v0.7.0

func (m *Publication) MarshalVT() (dAtA []byte, err error)

func (*Publication) ProtoMessage

func (*Publication) ProtoMessage()

func (*Publication) ProtoReflect added in v0.7.0

func (x *Publication) ProtoReflect() protoreflect.Message

func (*Publication) Reset

func (x *Publication) Reset()

func (*Publication) SizeVT added in v0.7.0

func (m *Publication) SizeVT() (n int)

func (*Publication) String

func (x *Publication) String() string

func (*Publication) UnmarshalEasyJSON added in v0.6.0

func (v *Publication) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*Publication) UnmarshalVT added in v0.7.0

func (m *Publication) UnmarshalVT(dAtA []byte) error

type PublishRequest

type PublishRequest struct {
	Channel string `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"`
	Data    Raw    `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
	Type    int32  `protobuf:"varint,3,opt,name=type,proto3" json:"type,omitempty"`       // 0 = regular (default), 1 = map
	Key     string `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"`          // Map publish: key to publish/remove
	Removed bool   `protobuf:"varint,5,opt,name=removed,proto3" json:"removed,omitempty"` // Map publish: true = remove this key
	// contains filtered or unexported fields
}

func (*PublishRequest) Descriptor deprecated

func (*PublishRequest) Descriptor() ([]byte, []int)

Deprecated: Use PublishRequest.ProtoReflect.Descriptor instead.

func (*PublishRequest) GetChannel

func (x *PublishRequest) GetChannel() string

func (*PublishRequest) GetData added in v0.7.0

func (x *PublishRequest) GetData() []byte

func (*PublishRequest) GetKey added in v0.19.0

func (x *PublishRequest) GetKey() string

func (*PublishRequest) GetRemoved added in v0.19.0

func (x *PublishRequest) GetRemoved() bool

func (*PublishRequest) GetType added in v0.19.0

func (x *PublishRequest) GetType() int32

func (PublishRequest) MarshalEasyJSON added in v0.6.0

func (v PublishRequest) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*PublishRequest) MarshalToSizedBufferVT added in v0.7.0

func (m *PublishRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*PublishRequest) MarshalToVT added in v0.7.0

func (m *PublishRequest) MarshalToVT(dAtA []byte) (int, error)

func (*PublishRequest) MarshalVT added in v0.7.0

func (m *PublishRequest) MarshalVT() (dAtA []byte, err error)

func (*PublishRequest) ProtoMessage

func (*PublishRequest) ProtoMessage()

func (*PublishRequest) ProtoReflect added in v0.7.0

func (x *PublishRequest) ProtoReflect() protoreflect.Message

func (*PublishRequest) Reset

func (x *PublishRequest) Reset()

func (*PublishRequest) SizeVT added in v0.7.0

func (m *PublishRequest) SizeVT() (n int)

func (*PublishRequest) String

func (x *PublishRequest) String() string

func (*PublishRequest) UnmarshalEasyJSON added in v0.6.0

func (v *PublishRequest) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*PublishRequest) UnmarshalVT added in v0.7.0

func (m *PublishRequest) UnmarshalVT(dAtA []byte) error

type PublishResult

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

func (*PublishResult) Descriptor deprecated

func (*PublishResult) Descriptor() ([]byte, []int)

Deprecated: Use PublishResult.ProtoReflect.Descriptor instead.

func (PublishResult) MarshalEasyJSON added in v0.6.0

func (v PublishResult) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*PublishResult) MarshalToSizedBufferVT added in v0.7.0

func (m *PublishResult) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*PublishResult) MarshalToVT added in v0.7.0

func (m *PublishResult) MarshalToVT(dAtA []byte) (int, error)

func (*PublishResult) MarshalVT added in v0.7.0

func (m *PublishResult) MarshalVT() (dAtA []byte, err error)

func (*PublishResult) ProtoMessage

func (*PublishResult) ProtoMessage()

func (*PublishResult) ProtoReflect added in v0.7.0

func (x *PublishResult) ProtoReflect() protoreflect.Message

func (*PublishResult) Reset

func (x *PublishResult) Reset()

func (*PublishResult) SizeVT added in v0.7.0

func (m *PublishResult) SizeVT() (n int)

func (*PublishResult) String

func (x *PublishResult) String() string

func (*PublishResult) UnmarshalEasyJSON added in v0.6.0

func (v *PublishResult) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*PublishResult) UnmarshalVT added in v0.7.0

func (m *PublishResult) UnmarshalVT(dAtA []byte) error

type Push

type Push struct {
	Id      int64  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // Optional numeric channel ID to avoid sending string channel in Push (bandwidth optimization).
	Channel string `protobuf:"bytes,2,opt,name=channel,proto3" json:"channel,omitempty"`
	// Server can push one of the following fields to the client. We are
	// not using oneof here due to JSON interoperability concerns.
	Pub         *Publication `protobuf:"bytes,4,opt,name=pub,proto3" json:"pub,omitempty"`
	Join        *Join        `protobuf:"bytes,5,opt,name=join,proto3" json:"join,omitempty"`
	Leave       *Leave       `protobuf:"bytes,6,opt,name=leave,proto3" json:"leave,omitempty"`
	Unsubscribe *Unsubscribe `protobuf:"bytes,7,opt,name=unsubscribe,proto3" json:"unsubscribe,omitempty"`
	Message     *Message     `protobuf:"bytes,8,opt,name=message,proto3" json:"message,omitempty"`
	Subscribe   *Subscribe   `protobuf:"bytes,9,opt,name=subscribe,proto3" json:"subscribe,omitempty"`
	Connect     *Connect     `protobuf:"bytes,10,opt,name=connect,proto3" json:"connect,omitempty"`
	Disconnect  *Disconnect  `protobuf:"bytes,11,opt,name=disconnect,proto3" json:"disconnect,omitempty"`
	Refresh     *Refresh     `protobuf:"bytes,12,opt,name=refresh,proto3" json:"refresh,omitempty"`
	// contains filtered or unexported fields
}

Push can be sent to a client as part of Reply in case of bidirectional transport or without additional wrapping in case of unidirectional transports.

func (*Push) Descriptor deprecated

func (*Push) Descriptor() ([]byte, []int)

Deprecated: Use Push.ProtoReflect.Descriptor instead.

func (*Push) GetChannel

func (x *Push) GetChannel() string

func (*Push) GetConnect added in v0.8.0

func (x *Push) GetConnect() *Connect

func (*Push) GetDisconnect added in v0.8.0

func (x *Push) GetDisconnect() *Disconnect

func (*Push) GetId added in v0.17.0

func (x *Push) GetId() int64

func (*Push) GetJoin added in v0.8.0

func (x *Push) GetJoin() *Join

func (*Push) GetLeave added in v0.8.0

func (x *Push) GetLeave() *Leave

func (*Push) GetMessage added in v0.8.0

func (x *Push) GetMessage() *Message

func (*Push) GetPub added in v0.8.0

func (x *Push) GetPub() *Publication

func (*Push) GetRefresh added in v0.8.0

func (x *Push) GetRefresh() *Refresh

func (*Push) GetSubscribe added in v0.8.0

func (x *Push) GetSubscribe() *Subscribe

func (*Push) GetUnsubscribe added in v0.8.0

func (x *Push) GetUnsubscribe() *Unsubscribe

func (Push) MarshalEasyJSON added in v0.6.0

func (v Push) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*Push) MarshalToSizedBufferVT added in v0.7.0

func (m *Push) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*Push) MarshalToVT added in v0.7.0

func (m *Push) MarshalToVT(dAtA []byte) (int, error)

func (*Push) MarshalVT added in v0.7.0

func (m *Push) MarshalVT() (dAtA []byte, err error)

func (*Push) ProtoMessage

func (*Push) ProtoMessage()

func (*Push) ProtoReflect added in v0.7.0

func (x *Push) ProtoReflect() protoreflect.Message

func (*Push) Reset

func (x *Push) Reset()

func (*Push) SizeVT added in v0.7.0

func (m *Push) SizeVT() (n int)

func (*Push) String

func (x *Push) String() string

func (*Push) UnmarshalEasyJSON added in v0.6.0

func (v *Push) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*Push) UnmarshalVT added in v0.7.0

func (m *Push) UnmarshalVT(dAtA []byte) error

type PushEncoder

type PushEncoder interface {
	Encode(*Push) ([]byte, error)
	EncodeMessage(*Message, ...[]byte) ([]byte, error)
	EncodePublication(*Publication, ...[]byte) ([]byte, error)
	EncodeJoin(*Join, ...[]byte) ([]byte, error)
	EncodeLeave(*Leave, ...[]byte) ([]byte, error)
	EncodeUnsubscribe(*Unsubscribe, ...[]byte) ([]byte, error)
	EncodeSubscribe(*Subscribe, ...[]byte) ([]byte, error)
	EncodeConnect(*Connect, ...[]byte) ([]byte, error)
	EncodeDisconnect(*Disconnect, ...[]byte) ([]byte, error)
	EncodeRefresh(*Refresh, ...[]byte) ([]byte, error)
}

PushEncoder encodes Push and its parts to bytes.

Parts of a Push are encoded separately from the Push envelope, so that a payload encoded once may be reused for all subscribers of a channel.

Methods which accept a variadic reuse argument may write the result into the provided buffer if it's large enough, avoiding an allocation. The returned slice may or may not alias the given buffer, so always use the returned value and don't touch the buffer until the result is not needed anymore.

func GetPushEncoder

func GetPushEncoder(protoType Type) PushEncoder

GetPushEncoder returns a PushEncoder for the given protocol type. Any type other than TypeJSON is treated as TypeProtobuf.

type RPCRequest

type RPCRequest struct {
	Data   Raw    `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	Method string `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"`
	// contains filtered or unexported fields
}

func (*RPCRequest) Descriptor deprecated

func (*RPCRequest) Descriptor() ([]byte, []int)

Deprecated: Use RPCRequest.ProtoReflect.Descriptor instead.

func (*RPCRequest) GetData added in v0.7.0

func (x *RPCRequest) GetData() []byte

func (*RPCRequest) GetMethod added in v0.3.3

func (x *RPCRequest) GetMethod() string

func (RPCRequest) MarshalEasyJSON added in v0.6.0

func (v RPCRequest) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*RPCRequest) MarshalToSizedBufferVT added in v0.7.0

func (m *RPCRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*RPCRequest) MarshalToVT added in v0.7.0

func (m *RPCRequest) MarshalToVT(dAtA []byte) (int, error)

func (*RPCRequest) MarshalVT added in v0.7.0

func (m *RPCRequest) MarshalVT() (dAtA []byte, err error)

func (*RPCRequest) ProtoMessage

func (*RPCRequest) ProtoMessage()

func (*RPCRequest) ProtoReflect added in v0.7.0

func (x *RPCRequest) ProtoReflect() protoreflect.Message

func (*RPCRequest) Reset

func (x *RPCRequest) Reset()

func (*RPCRequest) SizeVT added in v0.7.0

func (m *RPCRequest) SizeVT() (n int)

func (*RPCRequest) String

func (x *RPCRequest) String() string

func (*RPCRequest) UnmarshalEasyJSON added in v0.6.0

func (v *RPCRequest) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*RPCRequest) UnmarshalVT added in v0.7.0

func (m *RPCRequest) UnmarshalVT(dAtA []byte) error

type RPCResult

type RPCResult struct {
	Data Raw `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	// contains filtered or unexported fields
}

func (*RPCResult) Descriptor deprecated

func (*RPCResult) Descriptor() ([]byte, []int)

Deprecated: Use RPCResult.ProtoReflect.Descriptor instead.

func (*RPCResult) GetData added in v0.7.0

func (x *RPCResult) GetData() []byte

func (RPCResult) MarshalEasyJSON added in v0.6.0

func (v RPCResult) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*RPCResult) MarshalToSizedBufferVT added in v0.7.0

func (m *RPCResult) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*RPCResult) MarshalToVT added in v0.7.0

func (m *RPCResult) MarshalToVT(dAtA []byte) (int, error)

func (*RPCResult) MarshalVT added in v0.7.0

func (m *RPCResult) MarshalVT() (dAtA []byte, err error)

func (*RPCResult) ProtoMessage

func (*RPCResult) ProtoMessage()

func (*RPCResult) ProtoReflect added in v0.7.0

func (x *RPCResult) ProtoReflect() protoreflect.Message

func (*RPCResult) Reset

func (x *RPCResult) Reset()

func (*RPCResult) SizeVT added in v0.7.0

func (m *RPCResult) SizeVT() (n int)

func (*RPCResult) String

func (x *RPCResult) String() string

func (*RPCResult) UnmarshalEasyJSON added in v0.6.0

func (v *RPCResult) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*RPCResult) UnmarshalVT added in v0.7.0

func (m *RPCResult) UnmarshalVT(dAtA []byte) error

type Raw

type Raw []byte

Raw is the type used by the Centrifugal protocol for fields whose value we want to stay untouched – for example the application-specific JSON payload of a published message. It's very similar to json.RawMessage, but its encoding also accounts for the `\n` delimiter used to put several messages into a single transport frame.

Generated code uses Raw instead of []byte for all bytes fields, see generate.sh.

func (Raw) MarshalJSON

func (r Raw) MarshalJSON() ([]byte, error)

MarshalJSON returns r as the JSON encoding of r.

Raw payloads are passed through as is, with one exception: raw newlines are stripped, since a `\n` delimits messages inside a transport frame. Valid JSON only contains raw newlines as formatting whitespace between tokens – newlines within JSON strings are escaped – so removing them doesn't change the payload a subscriber decodes.

The returned slice may alias r, so it must not be modified.

func (*Raw) UnmarshalJSON

func (r *Raw) UnmarshalJSON(data []byte) error

UnmarshalJSON sets *r to a copy of data.

type Refresh added in v0.6.0

type Refresh struct {
	Expires bool   `protobuf:"varint,1,opt,name=expires,proto3" json:"expires,omitempty"`
	Ttl     uint32 `protobuf:"varint,2,opt,name=ttl,proto3" json:"ttl,omitempty"`
	// contains filtered or unexported fields
}

func (*Refresh) Descriptor deprecated added in v0.6.0

func (*Refresh) Descriptor() ([]byte, []int)

Deprecated: Use Refresh.ProtoReflect.Descriptor instead.

func (*Refresh) GetExpires added in v0.6.0

func (x *Refresh) GetExpires() bool

func (*Refresh) GetTtl added in v0.6.0

func (x *Refresh) GetTtl() uint32

func (Refresh) MarshalEasyJSON added in v0.6.0

func (v Refresh) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*Refresh) MarshalToSizedBufferVT added in v0.7.0

func (m *Refresh) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*Refresh) MarshalToVT added in v0.7.0

func (m *Refresh) MarshalToVT(dAtA []byte) (int, error)

func (*Refresh) MarshalVT added in v0.7.0

func (m *Refresh) MarshalVT() (dAtA []byte, err error)

func (*Refresh) ProtoMessage added in v0.6.0

func (*Refresh) ProtoMessage()

func (*Refresh) ProtoReflect added in v0.7.0

func (x *Refresh) ProtoReflect() protoreflect.Message

func (*Refresh) Reset added in v0.6.0

func (x *Refresh) Reset()

func (*Refresh) SizeVT added in v0.7.0

func (m *Refresh) SizeVT() (n int)

func (*Refresh) String added in v0.6.0

func (x *Refresh) String() string

func (*Refresh) UnmarshalEasyJSON added in v0.6.0

func (v *Refresh) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*Refresh) UnmarshalVT added in v0.7.0

func (m *Refresh) UnmarshalVT(dAtA []byte) error

type RefreshRequest

type RefreshRequest struct {
	Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
	// contains filtered or unexported fields
}

func (*RefreshRequest) Descriptor deprecated

func (*RefreshRequest) Descriptor() ([]byte, []int)

Deprecated: Use RefreshRequest.ProtoReflect.Descriptor instead.

func (*RefreshRequest) GetToken

func (x *RefreshRequest) GetToken() string

func (RefreshRequest) MarshalEasyJSON added in v0.6.0

func (v RefreshRequest) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*RefreshRequest) MarshalToSizedBufferVT added in v0.7.0

func (m *RefreshRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*RefreshRequest) MarshalToVT added in v0.7.0

func (m *RefreshRequest) MarshalToVT(dAtA []byte) (int, error)

func (*RefreshRequest) MarshalVT added in v0.7.0

func (m *RefreshRequest) MarshalVT() (dAtA []byte, err error)

func (*RefreshRequest) ProtoMessage

func (*RefreshRequest) ProtoMessage()

func (*RefreshRequest) ProtoReflect added in v0.7.0

func (x *RefreshRequest) ProtoReflect() protoreflect.Message

func (*RefreshRequest) Reset

func (x *RefreshRequest) Reset()

func (*RefreshRequest) SizeVT added in v0.7.0

func (m *RefreshRequest) SizeVT() (n int)

func (*RefreshRequest) String

func (x *RefreshRequest) String() string

func (*RefreshRequest) UnmarshalEasyJSON added in v0.6.0

func (v *RefreshRequest) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*RefreshRequest) UnmarshalVT added in v0.7.0

func (m *RefreshRequest) UnmarshalVT(dAtA []byte) error

type RefreshResult

type RefreshResult struct {
	Client  string `protobuf:"bytes,1,opt,name=client,proto3" json:"client,omitempty"`
	Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
	Expires bool   `protobuf:"varint,3,opt,name=expires,proto3" json:"expires,omitempty"`
	Ttl     uint32 `protobuf:"varint,4,opt,name=ttl,proto3" json:"ttl,omitempty"`
	// contains filtered or unexported fields
}

func (*RefreshResult) Descriptor deprecated

func (*RefreshResult) Descriptor() ([]byte, []int)

Deprecated: Use RefreshResult.ProtoReflect.Descriptor instead.

func (*RefreshResult) GetClient

func (x *RefreshResult) GetClient() string

func (*RefreshResult) GetExpires

func (x *RefreshResult) GetExpires() bool

func (*RefreshResult) GetTtl added in v0.4.1

func (x *RefreshResult) GetTtl() uint32

func (*RefreshResult) GetVersion

func (x *RefreshResult) GetVersion() string

func (RefreshResult) MarshalEasyJSON added in v0.6.0

func (v RefreshResult) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*RefreshResult) MarshalToSizedBufferVT added in v0.7.0

func (m *RefreshResult) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*RefreshResult) MarshalToVT added in v0.7.0

func (m *RefreshResult) MarshalToVT(dAtA []byte) (int, error)

func (*RefreshResult) MarshalVT added in v0.7.0

func (m *RefreshResult) MarshalVT() (dAtA []byte, err error)

func (*RefreshResult) ProtoMessage

func (*RefreshResult) ProtoMessage()

func (*RefreshResult) ProtoReflect added in v0.7.0

func (x *RefreshResult) ProtoReflect() protoreflect.Message

func (*RefreshResult) Reset

func (x *RefreshResult) Reset()

func (*RefreshResult) SizeVT added in v0.7.0

func (m *RefreshResult) SizeVT() (n int)

func (*RefreshResult) String

func (x *RefreshResult) String() string

func (*RefreshResult) UnmarshalEasyJSON added in v0.6.0

func (v *RefreshResult) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*RefreshResult) UnmarshalVT added in v0.7.0

func (m *RefreshResult) UnmarshalVT(dAtA []byte) error

type Reply

type Reply struct {

	// Id will only be set to a value > 0 for replies to commands. For pushes
	// coming from server to client it has zero value.
	Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	// Error can only be set in replies to commands. For pushes it is never set.
	Error *Error `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
	// ProtocolVersion2 server can send one of the following fields. We are not using
	// oneof here due to JSON interoperability concerns.
	Push          *Push                `protobuf:"bytes,4,opt,name=push,proto3" json:"push,omitempty"`
	Connect       *ConnectResult       `protobuf:"bytes,5,opt,name=connect,proto3" json:"connect,omitempty"`
	Subscribe     *SubscribeResult     `protobuf:"bytes,6,opt,name=subscribe,proto3" json:"subscribe,omitempty"`
	Unsubscribe   *UnsubscribeResult   `protobuf:"bytes,7,opt,name=unsubscribe,proto3" json:"unsubscribe,omitempty"`
	Publish       *PublishResult       `protobuf:"bytes,8,opt,name=publish,proto3" json:"publish,omitempty"`
	Presence      *PresenceResult      `protobuf:"bytes,9,opt,name=presence,proto3" json:"presence,omitempty"`
	PresenceStats *PresenceStatsResult `protobuf:"bytes,10,opt,name=presence_stats,json=presenceStats,proto3" json:"presence_stats,omitempty"`
	History       *HistoryResult       `protobuf:"bytes,11,opt,name=history,proto3" json:"history,omitempty"`
	Ping          *PingResult          `protobuf:"bytes,12,opt,name=ping,proto3" json:"ping,omitempty"`
	Rpc           *RPCResult           `protobuf:"bytes,13,opt,name=rpc,proto3" json:"rpc,omitempty"`
	Refresh       *RefreshResult       `protobuf:"bytes,14,opt,name=refresh,proto3" json:"refresh,omitempty"`
	SubRefresh    *SubRefreshResult    `protobuf:"bytes,15,opt,name=sub_refresh,json=subRefresh,proto3" json:"sub_refresh,omitempty"`
	// contains filtered or unexported fields
}

Reply is sent from a server to a client is sent as a response to Command or can be an async server-to-client Push.

func (*Reply) Descriptor deprecated

func (*Reply) Descriptor() ([]byte, []int)

Deprecated: Use Reply.ProtoReflect.Descriptor instead.

func (*Reply) GetConnect added in v0.8.0

func (x *Reply) GetConnect() *ConnectResult

func (*Reply) GetError

func (x *Reply) GetError() *Error

func (*Reply) GetHistory added in v0.8.0

func (x *Reply) GetHistory() *HistoryResult

func (*Reply) GetId added in v0.4.1

func (x *Reply) GetId() uint32

func (*Reply) GetPing added in v0.8.0

func (x *Reply) GetPing() *PingResult

func (*Reply) GetPresence added in v0.8.0

func (x *Reply) GetPresence() *PresenceResult

func (*Reply) GetPresenceStats added in v0.8.0

func (x *Reply) GetPresenceStats() *PresenceStatsResult

func (*Reply) GetPublish added in v0.8.0

func (x *Reply) GetPublish() *PublishResult

func (*Reply) GetPush added in v0.8.0

func (x *Reply) GetPush() *Push

func (*Reply) GetRefresh added in v0.8.0

func (x *Reply) GetRefresh() *RefreshResult

func (*Reply) GetRpc added in v0.8.0

func (x *Reply) GetRpc() *RPCResult

func (*Reply) GetSubRefresh added in v0.8.0

func (x *Reply) GetSubRefresh() *SubRefreshResult

func (*Reply) GetSubscribe added in v0.8.0

func (x *Reply) GetSubscribe() *SubscribeResult

func (*Reply) GetUnsubscribe added in v0.8.0

func (x *Reply) GetUnsubscribe() *UnsubscribeResult

func (Reply) MarshalEasyJSON added in v0.6.0

func (v Reply) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*Reply) MarshalToSizedBufferVT added in v0.7.0

func (m *Reply) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*Reply) MarshalToVT added in v0.7.0

func (m *Reply) MarshalToVT(dAtA []byte) (int, error)

func (*Reply) MarshalVT added in v0.7.0

func (m *Reply) MarshalVT() (dAtA []byte, err error)

func (*Reply) ProtoMessage

func (*Reply) ProtoMessage()

func (*Reply) ProtoReflect added in v0.7.0

func (x *Reply) ProtoReflect() protoreflect.Message

func (*Reply) Reset

func (x *Reply) Reset()

func (*Reply) SizeVT added in v0.7.0

func (m *Reply) SizeVT() (n int)

func (*Reply) String

func (x *Reply) String() string

func (*Reply) UnmarshalEasyJSON added in v0.6.0

func (v *Reply) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*Reply) UnmarshalVT added in v0.7.0

func (m *Reply) UnmarshalVT(dAtA []byte) error

type ReplyDecoder

type ReplyDecoder interface {
	// Reset makes the decoder ready to decode replies from the given frame.
	Reset([]byte) error
	// Decode returns the next Reply in the frame, or io.EOF if there are no
	// replies left.
	Decode() (*Reply, error)
}

ReplyDecoder decodes replies from a transport frame which may contain several of them. It's the client-side counterpart of ReplyEncoder.

Unlike CommandDecoder, Decode here returns io.EOF on its own once the frame is fully processed – with a nil Reply.

A ReplyDecoder is not safe for concurrent use.

type ReplyEncoder

type ReplyEncoder interface {
	Encode(*Reply) ([]byte, error)
}

ReplyEncoder encodes Reply to bytes. Use GetReplyEncoder to get an implementation for a concrete protocol Type.

func GetReplyEncoder

func GetReplyEncoder(protoType Type) ReplyEncoder

GetReplyEncoder returns a ReplyEncoder for the given protocol type. Any type other than TypeJSON is treated as TypeProtobuf.

Example

Replies are encoded per protocol type. The encoded result may be sent to a connection as is, or concatenated with other messages using a DataEncoder.

package main

import (
	"fmt"

	"github.com/centrifugal/protocol"
)

func main() {
	reply := &protocol.Reply{
		Id:      1,
		Connect: &protocol.ConnectResult{Client: "6d67dbfd", Version: "6.0.0"},
	}

	data, err := protocol.GetReplyEncoder(protocol.TypeJSON).Encode(reply)
	if err != nil {
		fmt.Println("encode error:", err)
		return
	}
	fmt.Println(string(data))
}
Output:
{"id":1,"connect":{"client":"6d67dbfd","version":"6.0.0"}}

type ReplyPoolCollection added in v0.9.0

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

ReplyPoolCollection is a set of pools of Reply objects, one pool per result type. Reusing Reply objects keeps a server from allocating an envelope for every command it answers.

Use the shared ReplyPool rather than creating a collection directly.

func (*ReplyPoolCollection) AcquireConnectReply added in v0.9.0

func (p *ReplyPoolCollection) AcquireConnectReply(result *ConnectResult) *Reply

AcquireConnectReply takes a Reply from the pool and sets the given ConnectResult on it.

func (*ReplyPoolCollection) AcquireHistoryReply added in v0.9.0

func (p *ReplyPoolCollection) AcquireHistoryReply(result *HistoryResult) *Reply

AcquireHistoryReply takes a Reply from the pool and sets the given HistoryResult on it.

func (*ReplyPoolCollection) AcquirePresenceReply added in v0.9.0

func (p *ReplyPoolCollection) AcquirePresenceReply(result *PresenceResult) *Reply

AcquirePresenceReply takes a Reply from the pool and sets the given PresenceResult on it.

func (*ReplyPoolCollection) AcquirePresenceStatsReply added in v0.9.0

func (p *ReplyPoolCollection) AcquirePresenceStatsReply(result *PresenceStatsResult) *Reply

AcquirePresenceStatsReply takes a Reply from the pool and sets the given PresenceStatsResult on it.

func (*ReplyPoolCollection) AcquirePublishReply added in v0.9.0

func (p *ReplyPoolCollection) AcquirePublishReply(result *PublishResult) *Reply

AcquirePublishReply takes a Reply from the pool and sets the given PublishResult on it.

func (*ReplyPoolCollection) AcquireRPCReply added in v0.9.0

func (p *ReplyPoolCollection) AcquireRPCReply(result *RPCResult) *Reply

AcquireRPCReply takes a Reply from the pool and sets the given RPCResult on it.

func (*ReplyPoolCollection) AcquireRefreshReply added in v0.9.0

func (p *ReplyPoolCollection) AcquireRefreshReply(result *RefreshResult) *Reply

AcquireRefreshReply takes a Reply from the pool and sets the given RefreshResult on it.

func (*ReplyPoolCollection) AcquireSubRefreshReply added in v0.9.0

func (p *ReplyPoolCollection) AcquireSubRefreshReply(result *SubRefreshResult) *Reply

AcquireSubRefreshReply takes a Reply from the pool and sets the given SubRefreshResult on it.

func (*ReplyPoolCollection) AcquireSubscribeReply added in v0.9.0

func (p *ReplyPoolCollection) AcquireSubscribeReply(result *SubscribeResult) *Reply

AcquireSubscribeReply takes a Reply from the pool and sets the given SubscribeResult on it.

func (*ReplyPoolCollection) AcquireUnsubscribeReply added in v0.9.0

func (p *ReplyPoolCollection) AcquireUnsubscribeReply(result *UnsubscribeResult) *Reply

AcquireUnsubscribeReply takes a Reply from the pool and sets the given UnsubscribeResult on it.

func (*ReplyPoolCollection) ReleaseConnectReply added in v0.9.0

func (p *ReplyPoolCollection) ReleaseConnectReply(r *Reply)

ReleaseConnectReply clears r and returns it to the pool. Neither r nor the result it referenced must be used after this call.

func (*ReplyPoolCollection) ReleaseHistoryReply added in v0.9.0

func (p *ReplyPoolCollection) ReleaseHistoryReply(r *Reply)

ReleaseHistoryReply clears r and returns it to the pool. Neither r nor the result it referenced must be used after this call.

func (*ReplyPoolCollection) ReleasePresenceReply added in v0.9.0

func (p *ReplyPoolCollection) ReleasePresenceReply(r *Reply)

ReleasePresenceReply clears r and returns it to the pool. Neither r nor the result it referenced must be used after this call.

func (*ReplyPoolCollection) ReleasePresenceStatsReply added in v0.9.0

func (p *ReplyPoolCollection) ReleasePresenceStatsReply(r *Reply)

ReleasePresenceStatsReply clears r and returns it to the pool. Neither r nor the result it referenced must be used after this call.

func (*ReplyPoolCollection) ReleasePublishReply added in v0.9.0

func (p *ReplyPoolCollection) ReleasePublishReply(r *Reply)

ReleasePublishReply clears r and returns it to the pool. Neither r nor the result it referenced must be used after this call.

func (*ReplyPoolCollection) ReleaseRPCReply added in v0.9.0

func (p *ReplyPoolCollection) ReleaseRPCReply(r *Reply)

ReleaseRPCReply clears r and returns it to the pool. Neither r nor the result it referenced must be used after this call.

func (*ReplyPoolCollection) ReleaseRefreshReply added in v0.9.0

func (p *ReplyPoolCollection) ReleaseRefreshReply(r *Reply)

ReleaseRefreshReply clears r and returns it to the pool. Neither r nor the result it referenced must be used after this call.

func (*ReplyPoolCollection) ReleaseSubRefreshReply added in v0.9.0

func (p *ReplyPoolCollection) ReleaseSubRefreshReply(r *Reply)

ReleaseSubRefreshReply clears r and returns it to the pool. Neither r nor the result it referenced must be used after this call.

func (*ReplyPoolCollection) ReleaseSubscribeReply added in v0.9.0

func (p *ReplyPoolCollection) ReleaseSubscribeReply(r *Reply)

ReleaseSubscribeReply clears r and returns it to the pool. Neither r nor the result it referenced must be used after this call.

func (*ReplyPoolCollection) ReleaseUnsubscribeReply added in v0.9.0

func (p *ReplyPoolCollection) ReleaseUnsubscribeReply(r *Reply)

ReleaseUnsubscribeReply clears r and returns it to the pool. Neither r nor the result it referenced must be used after this call.

type ResultEncoder

type ResultEncoder interface {
	EncodeConnectResult(*ConnectResult) ([]byte, error)
	EncodeRefreshResult(*RefreshResult) ([]byte, error)
	EncodeSubscribeResult(*SubscribeResult) ([]byte, error)
	EncodeSubRefreshResult(*SubRefreshResult) ([]byte, error)
	EncodeUnsubscribeResult(*UnsubscribeResult) ([]byte, error)
	EncodePublishResult(*PublishResult) ([]byte, error)
	EncodePresenceResult(*PresenceResult) ([]byte, error)
	EncodePresenceStatsResult(*PresenceStatsResult) ([]byte, error)
	EncodeHistoryResult(*HistoryResult) ([]byte, error)
	EncodePingResult(*PingResult) ([]byte, error)
	EncodeRPCResult(*RPCResult) ([]byte, error)
}

ResultEncoder encodes command results to bytes. Results are encoded separately from the Reply envelope, so that a result may be encoded once and then reused for many connections. Use GetResultEncoder to get an implementation for a concrete protocol Type.

func GetResultEncoder

func GetResultEncoder(protoType Type) ResultEncoder

GetResultEncoder returns a ResultEncoder for the given protocol type. Any type other than TypeJSON is treated as TypeProtobuf.

type SendRequest

type SendRequest struct {
	Data Raw `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	// contains filtered or unexported fields
}

func (*SendRequest) Descriptor deprecated

func (*SendRequest) Descriptor() ([]byte, []int)

Deprecated: Use SendRequest.ProtoReflect.Descriptor instead.

func (*SendRequest) GetData added in v0.7.0

func (x *SendRequest) GetData() []byte

func (SendRequest) MarshalEasyJSON added in v0.6.0

func (v SendRequest) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*SendRequest) MarshalToSizedBufferVT added in v0.7.0

func (m *SendRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*SendRequest) MarshalToVT added in v0.7.0

func (m *SendRequest) MarshalToVT(dAtA []byte) (int, error)

func (*SendRequest) MarshalVT added in v0.7.0

func (m *SendRequest) MarshalVT() (dAtA []byte, err error)

func (*SendRequest) ProtoMessage

func (*SendRequest) ProtoMessage()

func (*SendRequest) ProtoReflect added in v0.7.0

func (x *SendRequest) ProtoReflect() protoreflect.Message

func (*SendRequest) Reset

func (x *SendRequest) Reset()

func (*SendRequest) SizeVT added in v0.7.0

func (m *SendRequest) SizeVT() (n int)

func (*SendRequest) String

func (x *SendRequest) String() string

func (*SendRequest) UnmarshalEasyJSON added in v0.6.0

func (v *SendRequest) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*SendRequest) UnmarshalVT added in v0.7.0

func (m *SendRequest) UnmarshalVT(dAtA []byte) error

type StreamCommandDecoder added in v0.8.10

type StreamCommandDecoder interface {
	// Decode returns the next Command from the stream together with the number
	// of bytes attributed to it, or an error. It returns io.EOF when the stream
	// is over and ErrMessageTooLarge if the command exceeds the configured
	// message size limit.
	Decode() (*Command, int, error)
	// Reset makes the decoder read from the given reader, applying the given
	// message size limit. It is used internally to reuse a pooled decoder;
	// obtain a decoder via GetStreamCommandDecoderLimited, which enforces a
	// positive limit, rather than resetting one with a non-positive limit.
	Reset(reader io.Reader, messageSizeLimit int64)
}

StreamCommandDecoder decodes commands from an io.Reader. Unlike CommandDecoder, which works on a frame already read into memory, it's meant for streaming transports where commands arrive one after another and the size of an individual command must be bounded.

A StreamCommandDecoder is not safe for concurrent use. Use GetStreamCommandDecoderLimited and PutStreamCommandDecoder to take one from a pool and return it back when done.

func GetStreamCommandDecoderLimited added in v0.14.0

func GetStreamCommandDecoderLimited(protoType Type, reader io.Reader, messageSizeLimit int64) StreamCommandDecoder

GetStreamCommandDecoderLimited returns a StreamCommandDecoder for the given protocol type, taking it from a pool and resetting it to read commands from reader. Return it with PutStreamCommandDecoder once the stream is processed.

Commands larger than messageSizeLimit bytes are rejected with ErrMessageTooLarge. messageSizeLimit must be positive - a zero or negative limit panics, since an unbounded decoder over untrusted input can be driven to allocate arbitrary memory by a single frame. Any type other than TypeJSON is treated as TypeProtobuf.

type StreamPosition added in v0.6.0

type StreamPosition struct {
	Offset uint64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"`
	Epoch  string `protobuf:"bytes,2,opt,name=epoch,proto3" json:"epoch,omitempty"`
	// contains filtered or unexported fields
}

func (*StreamPosition) Descriptor deprecated added in v0.6.0

func (*StreamPosition) Descriptor() ([]byte, []int)

Deprecated: Use StreamPosition.ProtoReflect.Descriptor instead.

func (*StreamPosition) GetEpoch added in v0.6.0

func (x *StreamPosition) GetEpoch() string

func (*StreamPosition) GetOffset added in v0.6.0

func (x *StreamPosition) GetOffset() uint64

func (StreamPosition) MarshalEasyJSON added in v0.6.0

func (v StreamPosition) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*StreamPosition) MarshalToSizedBufferVT added in v0.7.0

func (m *StreamPosition) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*StreamPosition) MarshalToVT added in v0.7.0

func (m *StreamPosition) MarshalToVT(dAtA []byte) (int, error)

func (*StreamPosition) MarshalVT added in v0.7.0

func (m *StreamPosition) MarshalVT() (dAtA []byte, err error)

func (*StreamPosition) ProtoMessage added in v0.6.0

func (*StreamPosition) ProtoMessage()

func (*StreamPosition) ProtoReflect added in v0.7.0

func (x *StreamPosition) ProtoReflect() protoreflect.Message

func (*StreamPosition) Reset added in v0.6.0

func (x *StreamPosition) Reset()

func (*StreamPosition) SizeVT added in v0.7.0

func (m *StreamPosition) SizeVT() (n int)

func (*StreamPosition) String added in v0.6.0

func (x *StreamPosition) String() string

func (*StreamPosition) UnmarshalEasyJSON added in v0.6.0

func (v *StreamPosition) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*StreamPosition) UnmarshalVT added in v0.7.0

func (m *StreamPosition) UnmarshalVT(dAtA []byte) error

type SubRefreshRequest

type SubRefreshRequest struct {
	Channel string        `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"`
	Token   string        `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"`
	Type    int32         `protobuf:"varint,3,opt,name=type,proto3" json:"type,omitempty"`      // 0=sub_refresh, 1=track, 2=untrack
	Track   []*TrackBatch `protobuf:"bytes,4,rep,name=track,proto3" json:"track,omitempty"`     // for type=1
	Untrack []string      `protobuf:"bytes,5,rep,name=untrack,proto3" json:"untrack,omitempty"` // for type=2
	// contains filtered or unexported fields
}

func (*SubRefreshRequest) Descriptor deprecated

func (*SubRefreshRequest) Descriptor() ([]byte, []int)

Deprecated: Use SubRefreshRequest.ProtoReflect.Descriptor instead.

func (*SubRefreshRequest) GetChannel

func (x *SubRefreshRequest) GetChannel() string

func (*SubRefreshRequest) GetToken

func (x *SubRefreshRequest) GetToken() string

func (*SubRefreshRequest) GetTrack added in v0.19.1

func (x *SubRefreshRequest) GetTrack() []*TrackBatch

func (*SubRefreshRequest) GetType added in v0.19.0

func (x *SubRefreshRequest) GetType() int32

func (*SubRefreshRequest) GetUntrack added in v0.19.1

func (x *SubRefreshRequest) GetUntrack() []string

func (SubRefreshRequest) MarshalEasyJSON added in v0.6.0

func (v SubRefreshRequest) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*SubRefreshRequest) MarshalToSizedBufferVT added in v0.7.0

func (m *SubRefreshRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*SubRefreshRequest) MarshalToVT added in v0.7.0

func (m *SubRefreshRequest) MarshalToVT(dAtA []byte) (int, error)

func (*SubRefreshRequest) MarshalVT added in v0.7.0

func (m *SubRefreshRequest) MarshalVT() (dAtA []byte, err error)

func (*SubRefreshRequest) ProtoMessage

func (*SubRefreshRequest) ProtoMessage()

func (*SubRefreshRequest) ProtoReflect added in v0.7.0

func (x *SubRefreshRequest) ProtoReflect() protoreflect.Message

func (*SubRefreshRequest) Reset

func (x *SubRefreshRequest) Reset()

func (*SubRefreshRequest) SizeVT added in v0.7.0

func (m *SubRefreshRequest) SizeVT() (n int)

func (*SubRefreshRequest) String

func (x *SubRefreshRequest) String() string

func (*SubRefreshRequest) UnmarshalEasyJSON added in v0.6.0

func (v *SubRefreshRequest) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*SubRefreshRequest) UnmarshalVT added in v0.7.0

func (m *SubRefreshRequest) UnmarshalVT(dAtA []byte) error

type SubRefreshResult

type SubRefreshResult struct {
	Expires bool           `protobuf:"varint,1,opt,name=expires,proto3" json:"expires,omitempty"`
	Ttl     uint32         `protobuf:"varint,2,opt,name=ttl,proto3" json:"ttl,omitempty"` // for type=0: token TTL. for type=1: MIN TTL across all batches.
	Items   []*Publication `protobuf:"bytes,3,rep,name=items,proto3" json:"items,omitempty"`
	// contains filtered or unexported fields
}

func (*SubRefreshResult) Descriptor deprecated

func (*SubRefreshResult) Descriptor() ([]byte, []int)

Deprecated: Use SubRefreshResult.ProtoReflect.Descriptor instead.

func (*SubRefreshResult) GetExpires

func (x *SubRefreshResult) GetExpires() bool

func (*SubRefreshResult) GetItems added in v0.19.0

func (x *SubRefreshResult) GetItems() []*Publication

func (*SubRefreshResult) GetTtl added in v0.4.1

func (x *SubRefreshResult) GetTtl() uint32

func (SubRefreshResult) MarshalEasyJSON added in v0.6.0

func (v SubRefreshResult) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*SubRefreshResult) MarshalToSizedBufferVT added in v0.7.0

func (m *SubRefreshResult) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*SubRefreshResult) MarshalToVT added in v0.7.0

func (m *SubRefreshResult) MarshalToVT(dAtA []byte) (int, error)

func (*SubRefreshResult) MarshalVT added in v0.7.0

func (m *SubRefreshResult) MarshalVT() (dAtA []byte, err error)

func (*SubRefreshResult) ProtoMessage

func (*SubRefreshResult) ProtoMessage()

func (*SubRefreshResult) ProtoReflect added in v0.7.0

func (x *SubRefreshResult) ProtoReflect() protoreflect.Message

func (*SubRefreshResult) Reset

func (x *SubRefreshResult) Reset()

func (*SubRefreshResult) SizeVT added in v0.7.0

func (m *SubRefreshResult) SizeVT() (n int)

func (*SubRefreshResult) String

func (x *SubRefreshResult) String() string

func (*SubRefreshResult) UnmarshalEasyJSON added in v0.6.0

func (v *SubRefreshResult) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*SubRefreshResult) UnmarshalVT added in v0.7.0

func (m *SubRefreshResult) UnmarshalVT(dAtA []byte) error

type Subscribe added in v0.4.0

type Subscribe struct {
	Recoverable bool   `protobuf:"varint,1,opt,name=recoverable,proto3" json:"recoverable,omitempty"`
	Epoch       string `protobuf:"bytes,4,opt,name=epoch,proto3" json:"epoch,omitempty"`
	Offset      uint64 `protobuf:"varint,5,opt,name=offset,proto3" json:"offset,omitempty"`
	Positioned  bool   `protobuf:"varint,6,opt,name=positioned,proto3" json:"positioned,omitempty"`
	Data        Raw    `protobuf:"bytes,7,opt,name=data,proto3" json:"data,omitempty"`
	// contains filtered or unexported fields
}

Subscribe to channel, used for server-side subscriptions.

func (*Subscribe) Descriptor deprecated added in v0.4.0

func (*Subscribe) Descriptor() ([]byte, []int)

Deprecated: Use Subscribe.ProtoReflect.Descriptor instead.

func (*Subscribe) GetData added in v0.7.0

func (x *Subscribe) GetData() []byte

func (*Subscribe) GetEpoch added in v0.4.0

func (x *Subscribe) GetEpoch() string

func (*Subscribe) GetOffset added in v0.4.0

func (x *Subscribe) GetOffset() uint64

func (*Subscribe) GetPositioned added in v0.4.0

func (x *Subscribe) GetPositioned() bool

func (*Subscribe) GetRecoverable added in v0.4.0

func (x *Subscribe) GetRecoverable() bool

func (Subscribe) MarshalEasyJSON added in v0.6.0

func (v Subscribe) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*Subscribe) MarshalToSizedBufferVT added in v0.7.0

func (m *Subscribe) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*Subscribe) MarshalToVT added in v0.7.0

func (m *Subscribe) MarshalToVT(dAtA []byte) (int, error)

func (*Subscribe) MarshalVT added in v0.7.0

func (m *Subscribe) MarshalVT() (dAtA []byte, err error)

func (*Subscribe) ProtoMessage added in v0.4.0

func (*Subscribe) ProtoMessage()

func (*Subscribe) ProtoReflect added in v0.7.0

func (x *Subscribe) ProtoReflect() protoreflect.Message

func (*Subscribe) Reset added in v0.4.0

func (x *Subscribe) Reset()

func (*Subscribe) SizeVT added in v0.7.0

func (m *Subscribe) SizeVT() (n int)

func (*Subscribe) String added in v0.4.0

func (x *Subscribe) String() string

func (*Subscribe) UnmarshalEasyJSON added in v0.6.0

func (v *Subscribe) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*Subscribe) UnmarshalVT added in v0.7.0

func (m *Subscribe) UnmarshalVT(dAtA []byte) error

type SubscribeRequest

type SubscribeRequest struct {
	Channel     string      `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"`
	Token       string      `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"`
	Recover     bool        `protobuf:"varint,3,opt,name=recover,proto3" json:"recover,omitempty"`
	Epoch       string      `protobuf:"bytes,6,opt,name=epoch,proto3" json:"epoch,omitempty"`
	Offset      uint64      `protobuf:"varint,7,opt,name=offset,proto3" json:"offset,omitempty"`
	Data        Raw         `protobuf:"bytes,8,opt,name=data,proto3" json:"data,omitempty"`
	Positioned  bool        `protobuf:"varint,9,opt,name=positioned,proto3" json:"positioned,omitempty"`
	Recoverable bool        `protobuf:"varint,10,opt,name=recoverable,proto3" json:"recoverable,omitempty"`
	JoinLeave   bool        `protobuf:"varint,11,opt,name=join_leave,json=joinLeave,proto3" json:"join_leave,omitempty"`
	Delta       string      `protobuf:"bytes,12,opt,name=delta,proto3" json:"delta,omitempty"`
	Tf          *FilterNode `protobuf:"bytes,13,opt,name=tf,proto3" json:"tf,omitempty"`      // Optional server side filter based on publication tags .
	Flag        int64       `protobuf:"varint,14,opt,name=flag,proto3" json:"flag,omitempty"` // Enable subscription level features.
	Type        int32       `protobuf:"varint,15,opt,name=type,proto3" json:"type,omitempty"`
	Phase       int32       `protobuf:"varint,16,opt,name=phase,proto3" json:"phase,omitempty"`
	Cursor      string      `protobuf:"bytes,17,opt,name=cursor,proto3" json:"cursor,omitempty"`
	Limit       int32       `protobuf:"varint,18,opt,name=limit,proto3" json:"limit,omitempty"`
	Asc         bool        `protobuf:"varint,19,opt,name=asc,proto3" json:"asc,omitempty"`
	// contains filtered or unexported fields
}

func (*SubscribeRequest) Descriptor deprecated

func (*SubscribeRequest) Descriptor() ([]byte, []int)

Deprecated: Use SubscribeRequest.ProtoReflect.Descriptor instead.

func (*SubscribeRequest) GetAsc added in v0.19.0

func (x *SubscribeRequest) GetAsc() bool

func (*SubscribeRequest) GetChannel

func (x *SubscribeRequest) GetChannel() string

func (*SubscribeRequest) GetCursor added in v0.19.0

func (x *SubscribeRequest) GetCursor() string

func (*SubscribeRequest) GetData added in v0.7.6

func (x *SubscribeRequest) GetData() []byte

func (*SubscribeRequest) GetDelta added in v0.13.0

func (x *SubscribeRequest) GetDelta() string

func (*SubscribeRequest) GetEpoch

func (x *SubscribeRequest) GetEpoch() string

func (*SubscribeRequest) GetFlag added in v0.17.0

func (x *SubscribeRequest) GetFlag() int64

func (*SubscribeRequest) GetJoinLeave added in v0.8.9

func (x *SubscribeRequest) GetJoinLeave() bool

func (*SubscribeRequest) GetLimit added in v0.19.0

func (x *SubscribeRequest) GetLimit() int32

func (*SubscribeRequest) GetOffset

func (x *SubscribeRequest) GetOffset() uint64

func (*SubscribeRequest) GetPhase added in v0.19.0

func (x *SubscribeRequest) GetPhase() int32

func (*SubscribeRequest) GetPositioned added in v0.8.7

func (x *SubscribeRequest) GetPositioned() bool

func (*SubscribeRequest) GetRecover

func (x *SubscribeRequest) GetRecover() bool

func (*SubscribeRequest) GetRecoverable added in v0.8.7

func (x *SubscribeRequest) GetRecoverable() bool

func (*SubscribeRequest) GetTf added in v0.17.0

func (x *SubscribeRequest) GetTf() *FilterNode

func (*SubscribeRequest) GetToken

func (x *SubscribeRequest) GetToken() string

func (*SubscribeRequest) GetType added in v0.19.0

func (x *SubscribeRequest) GetType() int32

func (SubscribeRequest) MarshalEasyJSON added in v0.6.0

func (v SubscribeRequest) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*SubscribeRequest) MarshalToSizedBufferVT added in v0.7.0

func (m *SubscribeRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*SubscribeRequest) MarshalToVT added in v0.7.0

func (m *SubscribeRequest) MarshalToVT(dAtA []byte) (int, error)

func (*SubscribeRequest) MarshalVT added in v0.7.0

func (m *SubscribeRequest) MarshalVT() (dAtA []byte, err error)

func (*SubscribeRequest) ProtoMessage

func (*SubscribeRequest) ProtoMessage()

func (*SubscribeRequest) ProtoReflect added in v0.7.0

func (x *SubscribeRequest) ProtoReflect() protoreflect.Message

func (*SubscribeRequest) Reset

func (x *SubscribeRequest) Reset()

func (*SubscribeRequest) SizeVT added in v0.7.0

func (m *SubscribeRequest) SizeVT() (n int)

func (*SubscribeRequest) String

func (x *SubscribeRequest) String() string

func (*SubscribeRequest) UnmarshalEasyJSON added in v0.6.0

func (v *SubscribeRequest) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*SubscribeRequest) UnmarshalVT added in v0.7.0

func (m *SubscribeRequest) UnmarshalVT(dAtA []byte) error

type SubscribeResult

type SubscribeResult struct {
	Expires         bool           `protobuf:"varint,1,opt,name=expires,proto3" json:"expires,omitempty"`
	Ttl             uint32         `protobuf:"varint,2,opt,name=ttl,proto3" json:"ttl,omitempty"`
	Recoverable     bool           `protobuf:"varint,3,opt,name=recoverable,proto3" json:"recoverable,omitempty"`
	Epoch           string         `protobuf:"bytes,6,opt,name=epoch,proto3" json:"epoch,omitempty"`
	Publications    []*Publication `protobuf:"bytes,7,rep,name=publications,proto3" json:"publications,omitempty"`
	Recovered       bool           `protobuf:"varint,8,opt,name=recovered,proto3" json:"recovered,omitempty"`
	Offset          uint64         `protobuf:"varint,9,opt,name=offset,proto3" json:"offset,omitempty"`
	Positioned      bool           `protobuf:"varint,10,opt,name=positioned,proto3" json:"positioned,omitempty"`
	Data            Raw            `protobuf:"bytes,11,opt,name=data,proto3" json:"data,omitempty"`
	WasRecovering   bool           `protobuf:"varint,12,opt,name=was_recovering,json=wasRecovering,proto3" json:"was_recovering,omitempty"`
	Delta           bool           `protobuf:"varint,13,opt,name=delta,proto3" json:"delta,omitempty"`
	Id              int64          `protobuf:"varint,14,opt,name=id,proto3" json:"id,omitempty"`                                                  // Optional numeric channel ID to avoid sending string channel in the following Pushes (bandwidth optimization).
	Type            int32          `protobuf:"varint,15,opt,name=type,proto3" json:"type,omitempty"`                                              // Server must echo back type.
	Phase           int32          `protobuf:"varint,16,opt,name=phase,proto3" json:"phase,omitempty"`                                            // The result phase of the operation (LIVE = 0, STREAM = 1, STATE = 2)
	Cursor          string         `protobuf:"bytes,17,opt,name=cursor,proto3" json:"cursor,omitempty"`                                           // Next page cursor (empty = last page)
	State           []*Publication `protobuf:"bytes,18,rep,name=state,proto3" json:"state,omitempty"`                                             // Channel state entries.
	PublishDebounce uint32         `protobuf:"varint,19,opt,name=publish_debounce,json=publishDebounce,proto3" json:"publish_debounce,omitempty"` // in ms, if >0 SDK should debounce publications to this channel. First one should not be debounced.
	// contains filtered or unexported fields
}

func (*SubscribeResult) Descriptor deprecated

func (*SubscribeResult) Descriptor() ([]byte, []int)

Deprecated: Use SubscribeResult.ProtoReflect.Descriptor instead.

func (*SubscribeResult) GetCursor added in v0.19.0

func (x *SubscribeResult) GetCursor() string

func (*SubscribeResult) GetData added in v0.7.0

func (x *SubscribeResult) GetData() []byte

func (*SubscribeResult) GetDelta added in v0.13.0

func (x *SubscribeResult) GetDelta() bool

func (*SubscribeResult) GetEpoch

func (x *SubscribeResult) GetEpoch() string

func (*SubscribeResult) GetExpires

func (x *SubscribeResult) GetExpires() bool

func (*SubscribeResult) GetId added in v0.17.0

func (x *SubscribeResult) GetId() int64

func (*SubscribeResult) GetOffset

func (x *SubscribeResult) GetOffset() uint64

func (*SubscribeResult) GetPhase added in v0.19.0

func (x *SubscribeResult) GetPhase() int32

func (*SubscribeResult) GetPositioned added in v0.3.5

func (x *SubscribeResult) GetPositioned() bool

func (*SubscribeResult) GetPublications

func (x *SubscribeResult) GetPublications() []*Publication

func (*SubscribeResult) GetPublishDebounce added in v0.19.0

func (x *SubscribeResult) GetPublishDebounce() uint32

func (*SubscribeResult) GetRecoverable

func (x *SubscribeResult) GetRecoverable() bool

func (*SubscribeResult) GetRecovered

func (x *SubscribeResult) GetRecovered() bool

func (*SubscribeResult) GetState added in v0.19.0

func (x *SubscribeResult) GetState() []*Publication

func (*SubscribeResult) GetTtl added in v0.4.1

func (x *SubscribeResult) GetTtl() uint32

func (*SubscribeResult) GetType added in v0.19.0

func (x *SubscribeResult) GetType() int32

func (*SubscribeResult) GetWasRecovering added in v0.8.5

func (x *SubscribeResult) GetWasRecovering() bool

func (SubscribeResult) MarshalEasyJSON added in v0.6.0

func (v SubscribeResult) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*SubscribeResult) MarshalToSizedBufferVT added in v0.7.0

func (m *SubscribeResult) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*SubscribeResult) MarshalToVT added in v0.7.0

func (m *SubscribeResult) MarshalToVT(dAtA []byte) (int, error)

func (*SubscribeResult) MarshalVT added in v0.7.0

func (m *SubscribeResult) MarshalVT() (dAtA []byte, err error)

func (*SubscribeResult) ProtoMessage

func (*SubscribeResult) ProtoMessage()

func (*SubscribeResult) ProtoReflect added in v0.7.0

func (x *SubscribeResult) ProtoReflect() protoreflect.Message

func (*SubscribeResult) Reset

func (x *SubscribeResult) Reset()

func (*SubscribeResult) SizeVT added in v0.7.0

func (m *SubscribeResult) SizeVT() (n int)

func (*SubscribeResult) String

func (x *SubscribeResult) String() string

func (*SubscribeResult) UnmarshalEasyJSON added in v0.6.0

func (v *SubscribeResult) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*SubscribeResult) UnmarshalVT added in v0.7.0

func (m *SubscribeResult) UnmarshalVT(dAtA []byte) error

type TrackBatch added in v0.19.1

type TrackBatch struct {
	Signature string       `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"` // HMAC over (iat, expiry, user, channel, keys)
	Items     []*KeyedItem `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"`         // FULL key set the signature was computed over;
	// contains filtered or unexported fields
}

func (*TrackBatch) Descriptor deprecated added in v0.19.1

func (*TrackBatch) Descriptor() ([]byte, []int)

Deprecated: Use TrackBatch.ProtoReflect.Descriptor instead.

func (*TrackBatch) GetItems added in v0.19.1

func (x *TrackBatch) GetItems() []*KeyedItem

func (*TrackBatch) GetSignature added in v0.19.1

func (x *TrackBatch) GetSignature() string

func (TrackBatch) MarshalEasyJSON added in v0.19.1

func (v TrackBatch) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*TrackBatch) MarshalToSizedBufferVT added in v0.19.1

func (m *TrackBatch) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*TrackBatch) MarshalToVT added in v0.19.1

func (m *TrackBatch) MarshalToVT(dAtA []byte) (int, error)

func (*TrackBatch) MarshalVT added in v0.19.1

func (m *TrackBatch) MarshalVT() (dAtA []byte, err error)

func (*TrackBatch) ProtoMessage added in v0.19.1

func (*TrackBatch) ProtoMessage()

func (*TrackBatch) ProtoReflect added in v0.19.1

func (x *TrackBatch) ProtoReflect() protoreflect.Message

func (*TrackBatch) Reset added in v0.19.1

func (x *TrackBatch) Reset()

func (*TrackBatch) SizeVT added in v0.19.1

func (m *TrackBatch) SizeVT() (n int)

func (*TrackBatch) String added in v0.19.1

func (x *TrackBatch) String() string

func (*TrackBatch) UnmarshalEasyJSON added in v0.19.1

func (v *TrackBatch) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*TrackBatch) UnmarshalVT added in v0.19.1

func (m *TrackBatch) UnmarshalVT(dAtA []byte) error

type Type

type Type string

Type determines connection protocol type.

const (
	// TypeJSON means JSON protocol.
	TypeJSON Type = "json"
	// TypeProtobuf means Protobuf protocol.
	TypeProtobuf Type = "protobuf"
)

type Unsubscribe added in v0.4.0

type Unsubscribe struct {
	Code   uint32 `protobuf:"varint,2,opt,name=code,proto3" json:"code,omitempty"`
	Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"`
	// contains filtered or unexported fields
}

Unsubscribe from channel.

func (*Unsubscribe) Descriptor deprecated added in v0.4.0

func (*Unsubscribe) Descriptor() ([]byte, []int)

Deprecated: Use Unsubscribe.ProtoReflect.Descriptor instead.

func (*Unsubscribe) GetCode added in v0.8.5

func (x *Unsubscribe) GetCode() uint32

func (*Unsubscribe) GetReason added in v0.8.7

func (x *Unsubscribe) GetReason() string

func (Unsubscribe) MarshalEasyJSON added in v0.6.0

func (v Unsubscribe) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*Unsubscribe) MarshalToSizedBufferVT added in v0.7.0

func (m *Unsubscribe) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*Unsubscribe) MarshalToVT added in v0.7.0

func (m *Unsubscribe) MarshalToVT(dAtA []byte) (int, error)

func (*Unsubscribe) MarshalVT added in v0.7.0

func (m *Unsubscribe) MarshalVT() (dAtA []byte, err error)

func (*Unsubscribe) ProtoMessage added in v0.4.0

func (*Unsubscribe) ProtoMessage()

func (*Unsubscribe) ProtoReflect added in v0.7.0

func (x *Unsubscribe) ProtoReflect() protoreflect.Message

func (*Unsubscribe) Reset added in v0.4.0

func (x *Unsubscribe) Reset()

func (*Unsubscribe) SizeVT added in v0.7.0

func (m *Unsubscribe) SizeVT() (n int)

func (*Unsubscribe) String added in v0.4.0

func (x *Unsubscribe) String() string

func (*Unsubscribe) UnmarshalEasyJSON added in v0.6.0

func (v *Unsubscribe) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*Unsubscribe) UnmarshalVT added in v0.7.0

func (m *Unsubscribe) UnmarshalVT(dAtA []byte) error

type UnsubscribeRequest

type UnsubscribeRequest struct {
	Channel string `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"`
	// contains filtered or unexported fields
}

func (*UnsubscribeRequest) Descriptor deprecated

func (*UnsubscribeRequest) Descriptor() ([]byte, []int)

Deprecated: Use UnsubscribeRequest.ProtoReflect.Descriptor instead.

func (*UnsubscribeRequest) GetChannel

func (x *UnsubscribeRequest) GetChannel() string

func (UnsubscribeRequest) MarshalEasyJSON added in v0.6.0

func (v UnsubscribeRequest) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*UnsubscribeRequest) MarshalToSizedBufferVT added in v0.7.0

func (m *UnsubscribeRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*UnsubscribeRequest) MarshalToVT added in v0.7.0

func (m *UnsubscribeRequest) MarshalToVT(dAtA []byte) (int, error)

func (*UnsubscribeRequest) MarshalVT added in v0.7.0

func (m *UnsubscribeRequest) MarshalVT() (dAtA []byte, err error)

func (*UnsubscribeRequest) ProtoMessage

func (*UnsubscribeRequest) ProtoMessage()

func (*UnsubscribeRequest) ProtoReflect added in v0.7.0

func (x *UnsubscribeRequest) ProtoReflect() protoreflect.Message

func (*UnsubscribeRequest) Reset

func (x *UnsubscribeRequest) Reset()

func (*UnsubscribeRequest) SizeVT added in v0.7.0

func (m *UnsubscribeRequest) SizeVT() (n int)

func (*UnsubscribeRequest) String

func (x *UnsubscribeRequest) String() string

func (*UnsubscribeRequest) UnmarshalEasyJSON added in v0.6.0

func (v *UnsubscribeRequest) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*UnsubscribeRequest) UnmarshalVT added in v0.7.0

func (m *UnsubscribeRequest) UnmarshalVT(dAtA []byte) error

type UnsubscribeResult

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

func (*UnsubscribeResult) Descriptor deprecated

func (*UnsubscribeResult) Descriptor() ([]byte, []int)

Deprecated: Use UnsubscribeResult.ProtoReflect.Descriptor instead.

func (UnsubscribeResult) MarshalEasyJSON added in v0.6.0

func (v UnsubscribeResult) MarshalEasyJSON(w *writer)

MarshalEasyJSON supports easyjson.Marshaler interface

func (*UnsubscribeResult) MarshalToSizedBufferVT added in v0.7.0

func (m *UnsubscribeResult) MarshalToSizedBufferVT(dAtA []byte) (int, error)

func (*UnsubscribeResult) MarshalToVT added in v0.7.0

func (m *UnsubscribeResult) MarshalToVT(dAtA []byte) (int, error)

func (*UnsubscribeResult) MarshalVT added in v0.7.0

func (m *UnsubscribeResult) MarshalVT() (dAtA []byte, err error)

func (*UnsubscribeResult) ProtoMessage

func (*UnsubscribeResult) ProtoMessage()

func (*UnsubscribeResult) ProtoReflect added in v0.7.0

func (x *UnsubscribeResult) ProtoReflect() protoreflect.Message

func (*UnsubscribeResult) Reset

func (x *UnsubscribeResult) Reset()

func (*UnsubscribeResult) SizeVT added in v0.7.0

func (m *UnsubscribeResult) SizeVT() (n int)

func (*UnsubscribeResult) String

func (x *UnsubscribeResult) String() string

func (*UnsubscribeResult) UnmarshalEasyJSON added in v0.6.0

func (v *UnsubscribeResult) UnmarshalEasyJSON(l *jlexer.Lexer)

UnmarshalEasyJSON supports easyjson.Unmarshaler interface

func (*UnsubscribeResult) UnmarshalVT added in v0.7.0

func (m *UnsubscribeResult) UnmarshalVT(dAtA []byte) error

Jump to

Keyboard shortcuts

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