ihub.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package nnet
  2. import (
  3. "sync"
  4. "time"
  5. )
  6. var (
  7. // Hub 状态
  8. )
  9. type HubConfig struct {
  10. SizeOfSendChan uint32
  11. SizeOfRecvChan uint32
  12. ReadBufSize int
  13. WriteBufSize int
  14. Timeout time.Duration // 发送等超时
  15. Tick time.Duration // 定时回调
  16. ReadTimeout time.Duration // 讀超時,如果為0,則無限等待。超時到達,意味著客戶端心跳丟失
  17. }
  18. type IHub interface {
  19. Lock() // support locker semantics
  20. Unlock()
  21. Wg() *sync.WaitGroup // object
  22. ChQuit() <-chan struct{} // 返回一个通道,用于退出 hub 循环
  23. Conf() *HubConfig // 返回配置信息
  24. Callback() ISessionCallback // 返回回调对象
  25. Protocol() IProtocol // 返回数据协议
  26. Start() error // 启动 hub
  27. Stop() error // 停止 hub
  28. DoJob(int) // 执行 hub 中其他任务
  29. PutSession(uint64, ISession) error // session 管理,这里的 session 必须基于 id
  30. DelSession(uint64) error
  31. GetSession(uint64) (ISession, error)
  32. PeekSession(uint64) (ISession, error)
  33. RandSession() (ISession, error)
  34. GetSessionNum() int
  35. GetAllSessions() map[uint64]ISession
  36. }