| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package login
- import (
- nameActor "f1-game/internal/name/actor"
- cstring "github.com/cherry-game/cherry/extend/string"
- cfacade "github.com/cherry-game/cherry/facade"
- clog "github.com/cherry-game/cherry/logger"
- cactor "github.com/cherry-game/cherry/net/actor"
- )
- type actor struct {
- cactor.Base
- workerSize int
- }
- func NewActor(workerSize int) *actor {
- if workerSize < 1 {
- workerSize = 1
- }
- return &actor{
- workerSize: workerSize,
- }
- }
- func (p *actor) AliasID() string {
- return nameActor.Login
- }
- func (p *actor) OnInit() {
- // 预先创建子actor
- for i := range p.workerSize {
- childID := cstring.ToString(i)
- childActor := &actorLogin{}
- p.Child().Create(childID, childActor)
- }
- }
- func (p *actor) OnStop() {
- }
- // OnLocalReceived 拦截local消息,转发到子Actor
- func (p *actor) OnLocalReceived(m *cfacade.Message) (next bool, invoke bool) {
- if m.Session.Uid < 1 {
- clog.Warnf("Session uid error. m = %+v", m)
- return false, false
- }
- // 根据uid取模获取actorLogin进行登录处理
- childID := cstring.ToString(int(m.Session.Uid) % p.workerSize)
- if child, found := p.Child().Get(childID); found {
- child.PostLocal(m)
- }
- return false, false
- }
|