cluster

package
v0.6.4 Latest Latest
Warning

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

Go to latest
Published: Feb 6, 2025 License: MIT Imports: 32 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetBindBroadcastTopic added in v0.6.1

func GetBindBroadcastTopic(svType string) string

GetBindBroadcastTopic gets the topic on which bind events will be broadcasted

func GetUserKickTopic added in v0.6.1

func GetUserKickTopic(uid string, svType string) string

GetUserKickTopic get the topic for kicking an user

func GetUserMessagesTopic added in v0.6.1

func GetUserMessagesTopic(uid string, svType string) string

GetUserMessagesTopic get the topic for user

Types

type Action added in v0.6.1

type Action int

Action type for enum

const (
	ADD Action = iota
	DEL
)

Action values

type GRPCClient added in v0.6.1

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

GRPCClient rpc client struct

func NewGRPCClient added in v0.6.1

func NewGRPCClient(
	config config.GRPCClientConfig,
	server *Server,
	metricsReporters []metrics.Reporter,
	bindingStorage interfaces.BindingStorage,
	infoRetriever InfoRetriever,
) (*GRPCClient, error)

NewGRPCClient returns a new instance of GRPCClient

func (*GRPCClient) AddServer added in v0.6.1

func (gs *GRPCClient) AddServer(sv *Server)

AddServer is called when a new server is discovered

func (*GRPCClient) AfterInit added in v0.6.1

func (gs *GRPCClient) AfterInit()

AfterInit runs after initialization

func (*GRPCClient) BeforeShutdown added in v0.6.1

func (gs *GRPCClient) BeforeShutdown()

BeforeShutdown runs before shutdown

func (*GRPCClient) BroadcastSessionBind added in v0.6.1

func (gs *GRPCClient) BroadcastSessionBind(uid string) error

BroadcastSessionBind sends the binding information to other servers that may be interested in this info

func (*GRPCClient) Call added in v0.6.1

func (gs *GRPCClient) Call(
	ctx context.Context,
	rpcType protos.RPCType,
	route *route.Route,
	session session.Session,
	msg *message.Message,
	server *Server,
) (*protos.Response, error)

Call makes a RPC Call

func (*GRPCClient) Init added in v0.6.1

func (gs *GRPCClient) Init() error

Init inits grpc rpc client

func (*GRPCClient) RemoveServer added in v0.6.1

func (gs *GRPCClient) RemoveServer(sv *Server)

RemoveServer is called when a server is removed

func (*GRPCClient) Send added in v0.6.1

func (gs *GRPCClient) Send(uid string, d []byte) error

Send not implemented in grpc client

func (*GRPCClient) SendKick added in v0.6.1

func (gs *GRPCClient) SendKick(userID string, serverType string, kick *protos.KickMsg) error

SendKick sends a kick to an user

func (*GRPCClient) SendPush added in v0.6.1

func (gs *GRPCClient) SendPush(userID string, frontendSv *Server, push *protos.Push) error

SendPush sends a message to an user, if you dont know the serverID that the user is connected to, you need to set a BindingStorage when creating the client TODO: Jaeger?

func (*GRPCClient) Shutdown added in v0.6.1

func (gs *GRPCClient) Shutdown() error

Shutdown stops grpc rpc server

type GRPCServer added in v0.6.1

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

GRPCServer rpc server struct

func NewGRPCServer added in v0.6.1

func NewGRPCServer(config config.GRPCServerConfig, server *Server, metricsReporters []metrics.Reporter) (*GRPCServer, error)

NewGRPCServer constructor

func (*GRPCServer) AfterInit added in v0.6.1

func (gs *GRPCServer) AfterInit()

AfterInit runs after initialization

func (*GRPCServer) BeforeShutdown added in v0.6.1

func (gs *GRPCServer) BeforeShutdown()

BeforeShutdown runs before shutdown

func (*GRPCServer) Init added in v0.6.1

func (gs *GRPCServer) Init() error

Init inits grpc rpc server

func (*GRPCServer) SetNanoServer added in v0.6.1

func (gs *GRPCServer) SetNanoServer(ps protos.NanoServer)

SetNanoServer sets the nano server

func (*GRPCServer) Shutdown added in v0.6.1

func (gs *GRPCServer) Shutdown() error

Shutdown stops grpc rpc server

type InfoRetriever added in v0.6.1

type InfoRetriever interface {
	Region() string
}

InfoRetriever gets cluster info It can be implemented, for exemple, by reading env var, config or by accessing the cluster API

func NewInfoRetriever added in v0.6.1

func NewInfoRetriever(config config.InfoRetrieverConfig) InfoRetriever

NewInfoRetriever returns a *infoRetriever

type NatsRPCClient added in v0.6.1

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

NatsRPCClient struct

func NewNatsRPCClient added in v0.6.1

func NewNatsRPCClient(
	config config.NatsRPCClientConfig,
	server *Server,
	metricsReporters []metrics.Reporter,
	appDieChan chan bool,
) (*NatsRPCClient, error)

NewNatsRPCClient ctor

func (*NatsRPCClient) AfterInit added in v0.6.1

func (ns *NatsRPCClient) AfterInit()

AfterInit runs after initialization

func (*NatsRPCClient) BeforeShutdown added in v0.6.1

func (ns *NatsRPCClient) BeforeShutdown()

BeforeShutdown runs before shutdown

func (*NatsRPCClient) BroadcastSessionBind added in v0.6.1

func (ns *NatsRPCClient) BroadcastSessionBind(uid string) error

BroadcastSessionBind sends the binding information to other servers that may be interested in this info

func (*NatsRPCClient) Call added in v0.6.1

func (ns *NatsRPCClient) Call(
	ctx context.Context,
	rpcType protos.RPCType,
	route *route.Route,
	session session.Session,
	msg *message.Message,
	server *Server,
) (*protos.Response, error)

Call calls a method remotely

func (*NatsRPCClient) Init added in v0.6.1

func (ns *NatsRPCClient) Init() error

Init inits nats rpc client

func (*NatsRPCClient) Send added in v0.6.1

func (ns *NatsRPCClient) Send(topic string, data []byte) error

Send publishes a message in a given topic

func (*NatsRPCClient) SendKick added in v0.6.1

func (ns *NatsRPCClient) SendKick(userID string, serverType string, kick *protos.KickMsg) error

SendKick kicks an user

func (*NatsRPCClient) SendPush added in v0.6.1

func (ns *NatsRPCClient) SendPush(userID string, frontendSv *Server, push *protos.Push) error

SendPush sends a message to a user

func (*NatsRPCClient) Shutdown added in v0.6.1

func (ns *NatsRPCClient) Shutdown() error

Shutdown stops nats rpc server

type NatsRPCServer added in v0.6.1

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

NatsRPCServer struct

func NewNatsRPCServer added in v0.6.1

func NewNatsRPCServer(
	config config.NatsRPCServerConfig,
	server *Server,
	metricsReporters []metrics.Reporter,
	appDieChan chan bool,
	sessionPool session.SessionPool,
) (*NatsRPCServer, error)

NewNatsRPCServer ctor

func (*NatsRPCServer) AfterInit added in v0.6.1

func (ns *NatsRPCServer) AfterInit()

AfterInit runs after initialization

func (*NatsRPCServer) BeforeShutdown added in v0.6.1

func (ns *NatsRPCServer) BeforeShutdown()

BeforeShutdown runs before shutdown

func (*NatsRPCServer) GetBindingsChannel added in v0.6.1

func (ns *NatsRPCServer) GetBindingsChannel() chan *nats.Msg

GetBindingsChannel gets the channel that will receive all bindings

func (*NatsRPCServer) GetUnhandledRequestsChannel added in v0.6.1

func (ns *NatsRPCServer) GetUnhandledRequestsChannel() chan *protos.Request

GetUnhandledRequestsChannel gets the unhandled requests channel from nats rpc server

func (*NatsRPCServer) Init added in v0.6.1

func (ns *NatsRPCServer) Init() error

Init inits nats rpc server

func (*NatsRPCServer) SetNanoServer added in v0.6.1

func (ns *NatsRPCServer) SetNanoServer(ps protos.NanoServer)

SetNanoServer sets the nano server

func (*NatsRPCServer) Shutdown added in v0.6.1

func (ns *NatsRPCServer) Shutdown() error

Shutdown stops nats rpc server

type RPCClient added in v0.6.1

type RPCClient interface {
	Send(route string, data []byte) error
	SendPush(userID string, frontendSv *Server, push *protos.Push) error
	SendKick(userID string, serverType string, kick *protos.KickMsg) error
	BroadcastSessionBind(uid string) error
	Call(ctx context.Context, rpcType protos.RPCType, route *route.Route, session session.Session, msg *message.Message, server *Server) (*protos.Response, error)
	interfaces.Module
}

RPCClient interface

type RPCServer added in v0.6.1

type RPCServer interface {
	SetNanoServer(protos.NanoServer)
	interfaces.Module
}

RPCServer interface

type RemoteBindingListener added in v0.6.1

type RemoteBindingListener interface {
	OnUserBind(uid, fid string)
}

RemoteBindingListener listens to session bindings in remote servers

type SDListener added in v0.6.1

type SDListener interface {
	AddServer(*Server)
	RemoveServer(*Server)
}

SDListener interface

type Server added in v0.6.1

type Server struct {
	ID       string            `json:"id"`
	Type     string            `json:"type"`
	Metadata map[string]string `json:"metadata"`
	Frontend bool              `json:"frontend"`
	Hostname string            `json:"hostname"`
}

Server struct

func NewServer added in v0.6.1

func NewServer(id, serverType string, frontend bool, metadata ...map[string]string) *Server

NewServer ctor

func (*Server) AsJSONString added in v0.6.1

func (s *Server) AsJSONString() string

AsJSONString returns the server as a json string

type ServiceDiscovery added in v0.6.1

type ServiceDiscovery interface {
	GetServersByType(serverType string) (map[string]*Server, error)
	GetServer(id string) (*Server, error)
	GetServers() []*Server
	SyncServers(firstSync bool) error
	AddListener(listener SDListener)
	interfaces.Module
}

ServiceDiscovery is the interface for a service discovery client

func NewEtcdServiceDiscovery added in v0.6.1

func NewEtcdServiceDiscovery(
	config config.EtcdServiceDiscoveryConfig,
	server *Server,
	appDieChan chan bool,
	cli ...*clientv3.Client,
) (ServiceDiscovery, error)

NewEtcdServiceDiscovery ctor

Directories

Path Synopsis
Package mock_cluster is a generated GoMock package.
Package mock_cluster is a generated GoMock package.

Jump to

Keyboard shortcuts

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