Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( Name = self.Name Using = self.Using Install = self.Install Uninstall = self.Uninstall )
View Source
var ( ErrGroupExisted = errors.New("router: group already existed") ErrGroupDeleted = errors.New("router: group already deleted") )
View Source
var With _Option
Functions ¶
This section is empty.
Types ¶
type IGroup ¶
type IGroup interface { context.Context // GetId 获取分组Id GetId() uid.Id // AddEntities 添加实体 AddEntities(ctx context.Context, entIds ...uid.Id) error // RemoveEntities 删除实体 RemoveEntities(ctx context.Context, entIds ...uid.Id) error // RenewEntities 刷新所有实体 RenewEntities(ctx context.Context, entIds ...uid.Id) error // RangeEntities 遍历所有实体 RangeEntities(fun generic.Func1[uid.Id, bool]) // CountEntities 获取实体数量 CountEntities() int // RefreshTTL 刷新TTL RefreshTTL(ctx context.Context) error // SendData 发送数据 SendData(data []byte) error // SendEvent 发送自定义事件 SendEvent(event transport.Event[gtp.MsgReader]) error // SendDataChan 发送数据的channel SendDataChan() chan<- binaryutil.RecycleBytes // SendEventChan 发送自定义事件的channel SendEventChan() chan<- transport.Event[gtp.MsgReader] }
IGroup 分组接口
type IMapping ¶ added in v0.1.45
type IMapping interface { context.Context // GetEntity 获取实体 GetEntity() ec.ConcurrentEntity // GetSession 获取会话 GetSession() gate.ISession // GetCliAddr 获取客户端地址 GetCliAddr() string }
IMapping 映射
type IRouter ¶
type IRouter interface { // Mapping 路由映射 Mapping(entityId, sessionId uid.Id) (IMapping, error) // CleanEntity 清理实体路由信息 CleanEntity(entityId uid.Id) // CleanSession 清理会话路由信息 CleanSession(sessionId uid.Id) // LookupEntity 查找实体 LookupEntity(sessionId uid.Id) (ec.ConcurrentEntity, string, bool) // LookupSession 查找会话 LookupSession(entityId uid.Id) (gate.ISession, bool) // GetGroup 查询分组 GetGroup(groupId uid.Id) (IGroup, bool) // GetOrAddGroup 查询或添加分组 GetOrAddGroup(ctx context.Context, groupId uid.Id, ttl time.Duration, entIds ...uid.Id) (IGroup, error) // GetAndDeleteGroup 查询并删除分组 GetAndDeleteGroup(ctx context.Context, groupId uid.Id) (IGroup, bool) // AddGroup 添加分组 AddGroup(ctx context.Context, groupId uid.Id, ttl time.Duration, entIds ...uid.Id) (IGroup, error) // DeleteGroup 删除分组 DeleteGroup(ctx context.Context, groupId uid.Id) // RangeGroups 遍历所有分组 RangeGroups(fun generic.Func1[IGroup, bool]) // CountGroups 统计所有分组数量 CountGroups() int }
IRouter 路由器接口
type RouterOptions ¶
type RouterOptions struct { EtcdClient *clientv3.Client EtcdConfig *clientv3.Config KeyPrefix string WatchChanSize int GroupTTL time.Duration GroupAutoRefreshTTL bool GroupSendDataChanSize int GroupSendEventChanSize int CustomUsername string CustomPassword string CustomAddresses []string CustomTLSConfig *tls.Config }
Click to show internal directories.
Click to hide internal directories.