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 ( ErrEntityNotFound = errors.New("router: entity not found") ErrSessionNotFound = errors.New("router: session not found") ErrEntityMapped = errors.New("router: entity is already mapping") ErrSessionMapped = errors.New("router: session is already mapping") )
View Source
var With _Option
Functions ¶
This section is empty.
Types ¶
type IGroup ¶
type IGroup interface { context.Context // GetName 获取分组名称 GetName() string // GetAddr 获取分组地址 GetAddr() string // Add 添加实体 Add(ctx context.Context, entIds ...uid.Id) error // Remove 删除实体 Remove(ctx context.Context, entIds ...uid.Id) error // Range 遍历所有实体 Range(fun generic.Func1[uid.Id, bool]) // Each 遍历所有实体 Each(fun generic.Action1[uid.Id]) // Count 获取实体数量 Count() int // RefreshTTL 刷新TTL RefreshTTL(ctx context.Context) error // SendData 发送数据 SendData(data []byte) // SendEvent 发送自定义事件 SendEvent(event transport.IEvent) // SendDataChan 发送数据的channel SendDataChan() chan<- binaryutil.RecycleBytes // SendEventChan 发送自定义事件的channel SendEventChan() chan<- transport.IEvent }
IGroup 分组接口
type IMapping ¶
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) // AddGroup 添加分组 AddGroup(ctx context.Context, name string) (IGroup, error) // DeleteGroup 删除分组 DeleteGroup(ctx context.Context, name string) // GetGroup 查询分组 GetGroup(ctx context.Context, name string) (IGroup, bool) // GetGroupByAddr 使用分组地址查询分组 GetGroupByAddr(ctx context.Context, addr string) (IGroup, bool) // RangeGroups 遍历包含实体的所有分组 RangeGroups(ctx context.Context, entityId uid.Id, fun generic.Func1[IGroup, bool]) // EachGroups 遍历包含实体的所有分组 EachGroups(ctx context.Context, entityId uid.Id, fun generic.Action1[IGroup]) }
IRouter 路由器接口
type RouterOptions ¶
type RouterOptions struct { EtcdClient *clientv3.Client EtcdConfig *clientv3.Config GroupKeyPrefix string GroupTTL time.Duration GroupAutoRefreshTTL bool GroupSendDataChanSize int GroupSendEventChanSize int EntityGroupsKeyPrefix string EntityGroupsCacheTTL time.Duration CustomUsername string CustomPassword string CustomAddresses []string CustomTLSConfig *tls.Config }
Click to show internal directories.
Click to hide internal directories.