sharding

package
v0.7.0 Latest Latest
Warning

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

Go to latest
Published: Jan 24, 2022 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultConfig = Config{
	CustomShards: false,
	GatewayCreateFunc: func(token string, url string, shardID int, shardCount int, eventHandlerFunc gateway.EventHandlerFunc, config *gateway.Config) gateway.Gateway {
		return gateway.New(token, url, shardID, shardCount, eventHandlerFunc, config)
	},
	GatewayConfig: &gateway.DefaultConfig,
	RateLimiter:   srate2.NewLimiter(&srate2.DefaultConfig),
}

Functions

func ShardIDByGuild

func ShardIDByGuild(guildID snowflake.Snowflake, shardCount int) int

Types

type Config

type Config struct {
	Logger            log.Logger
	CustomShards      bool
	Shards            *IntSet
	ShardCount        int
	GatewayCreateFunc func(token string, url string, shardID int, shardCount int, eventHandlerFunc gateway.EventHandlerFunc, config *gateway.Config) gateway.Gateway
	GatewayConfig     *gateway.Config
	RateLimiter       srate2.Limiter
	RateLimiterConfig *srate2.Config
}

func (*Config) Apply

func (c *Config) Apply(opts []ConfigOpt)

type ConfigOpt

type ConfigOpt func(config *Config)

func WithGatewayConfig

func WithGatewayConfig(gatewayConfig gateway.Config) ConfigOpt

func WithGatewayConfigOpts

func WithGatewayConfigOpts(opts ...gateway.ConfigOpt) ConfigOpt

func WithGatewayCreateFunc

func WithGatewayCreateFunc(gatewayCreateFunc func(token string, url string, shardID int, shardCount int, eventHandlerFunc gateway.EventHandlerFunc, config *gateway.Config) gateway.Gateway) ConfigOpt

func WithLogger

func WithLogger(logger log.Logger) ConfigOpt

func WithRateLimiter

func WithRateLimiter(rateLimiter srate2.Limiter) ConfigOpt

func WithRateLimiterConfig

func WithRateLimiterConfig(rateConfig srate2.Config) ConfigOpt

func WithRateLimiterConfigOpt

func WithRateLimiterConfigOpt(opts ...srate2.ConfigOpt) ConfigOpt

func WithShardCount

func WithShardCount(shardCount int) ConfigOpt

func WithShards

func WithShards(shards ...int) ConfigOpt

type IntSet

type IntSet struct {
	sync.RWMutex
	Set map[int]struct{}
}

func NewIntSet

func NewIntSet(ints ...int) *IntSet

func (*IntSet) Add

func (s *IntSet) Add(i int)

func (*IntSet) Delete

func (s *IntSet) Delete(i int)

func (*IntSet) Has

func (s *IntSet) Has(i int) bool

func (*IntSet) Len

func (s *IntSet) Len() int

func (*IntSet) String

func (s *IntSet) String() string

type ShardManager

type ShardManager interface {
	Logger() log.Logger
	Config() Config
	RateLimiter() srate.Limiter

	Open(ctx context.Context) error
	ReOpen(ctx context.Context) error
	Close(ctx context.Context) error

	OpenShard(ctx context.Context, shardID int) error
	ReOpenShard(ctx context.Context, shardID int) error
	CloseShard(ctx context.Context, shardID int) error

	GetGuildShard(guildId snowflake.Snowflake) gateway.Gateway

	Shard(shardID int) gateway.Gateway
	Shards() *ShardsMap
}

func New

func New(token string, gatewayURL string, eventHandlerFunc gateway.EventHandlerFunc, config *Config) ShardManager

type ShardsMap

type ShardsMap struct {
	sync.RWMutex
	Shards map[int]gateway.Gateway
}

func NewShardsMap

func NewShardsMap() *ShardsMap

func (*ShardsMap) Delete

func (m *ShardsMap) Delete(shardId int) gateway.Gateway

func (*ShardsMap) Get

func (m *ShardsMap) Get(shardId int) gateway.Gateway

func (*ShardsMap) Has

func (m *ShardsMap) Has(shardId int) bool

func (*ShardsMap) Set

func (m *ShardsMap) Set(shardId int, shard gateway.Gateway)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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