protocol

package module
v0.20.0 Latest Latest
Warning

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

Go to latest
Published: Aug 4, 2026 License: MIT Imports: 21 Imported by: 10

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, GetStreamCommandDecoder/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

This section is empty.

Variables

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 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 GetStreamCommandDecoder or 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 */
	Flag    int64                        `protobuf:"varint,7,opt,name=flag,proto3" json:"flag,omitempty"` // Enable connection level features.
	// 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) 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) 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).
	// 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) GetExpires

func (x *ConnectResult) GetExpires() bool

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 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. A zero or negative messageSizeLimit means no limit.

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. A zero or negative messageSizeLimit means no limit.

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. A zero or negative limit means no 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 GetStreamCommandDecoder and PutStreamCommandDecoder to take one from a pool and return it back when done.

func GetStreamCommandDecoder added in v0.9.0

func GetStreamCommandDecoder(protoType Type, reader io.Reader) StreamCommandDecoder

GetStreamCommandDecoder returns a StreamCommandDecoder for the given protocol type which reads commands from reader with no limit on the message size. It's a shortcut for GetStreamCommandDecoderLimited with a zero limit.

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. A zero or negative limit means no limit, which is only appropriate for trusted input. 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