Documentation ¶
Overview ¶
封装了本地genserver,支持异步同步调用
Index ¶
- Constants
- type Iack
- type Ijob
- type InputMessage
- type Job
- type LocalClient
- type LocalServer
- func (server *LocalServer) Check(input *InputMessage) bool
- func (server *LocalServer) CloseByForce()
- func (server *LocalServer) CloseByGrace()
- func (server *LocalServer) Exec(input *InputMessage)
- func (server *LocalServer) NewLocalClient() *LocalClient
- func (server *LocalServer) Register(msg interface{}, msgHandler interface{}) error
- type LocalTimerServer
- func (server *LocalTimerServer) AddJobRepeat(jobInterval time.Duration, times uint64, jobFunc MessageHandler1, ...) (Ijob, bool)
- func (server *LocalTimerServer) AddJobWithDeadtime(deadtime time.Time, jobFunc MessageHandler1, args []interface{}) (Ijob, bool)
- func (server *LocalTimerServer) AddJobWithInterval(timeout time.Duration, jobFunc MessageHandler1, args []interface{}) (Ijob, bool)
- func (server *LocalTimerServer) DelJob(job Ijob) bool
- func (server *LocalTimerServer) DelJobs(jobs []Ijob)
- func (server *LocalTimerServer) GetCount() uint64
- func (server *LocalTimerServer) Reset() *LocalTimerServer
- func (server *LocalTimerServer) StopByForce()
- func (server *LocalTimerServer) StopByGrace()
- func (server *LocalTimerServer) UpdateJobTimeout(job Ijob, timeout time.Duration) bool
- func (server *LocalTimerServer) WaitJobs() uint
- type MessageHandler1
- type MessageHandler2
- type MessageHandler3
- type MessageHandlerRet1
- type MessageHandlerRet2
- type OutputMessage
Constants ¶
View Source
const DEFAULT = time.Duration(math.MaxInt64)
定时器初始值
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type InputMessage ¶
type InputMessage struct { Msg interface{} // 消息标识(暂时不预留内部消息) F interface{} // 消息handler CB Iack // 消息回调 Args []interface{} // 函数调用参数 OutputChan chan *OutputMessage // 接收返回值的队列(长度为1) }
type Job ¶
type Job struct { Id uint64 // 唯一id,由timerserver生成,用来区分同一时刻的不同事件 Times uint64 // 允许执行的最大次数:0表示无数次 Count uint64 // 表示已执行的次数 IntervalTime time.Duration // 间隔时间:支持ns CreateTime time.Time // 创建时间 ActionTime time.Time // FIXME 计算得出的本次执行时间点,会有误差 JobHandler MessageHandler1 // 事件函数 Args []interface{} // 函数调用参数 MsgChan chan Job // 消息通道,执行时,控制器通过该通道向外部传递消息 }
func (*Job) ExecWithGo ¶
type LocalClient ¶
type LocalClient struct {
Server *LocalServer // rpcserver
}
func (*LocalClient) Call ¶
func (client *LocalClient) Call(input *InputMessage, timeout int) (*OutputMessage, error)
同步请求rpcserver input:请求参数 timeout:超时时间(秒) FIXME 调用前需要先注册
func (*LocalClient) Cast ¶
func (client *LocalClient) Cast(input *InputMessage)
异步请求rpcserver FIXME 调用前需要先注册
type LocalServer ¶
type LocalServer struct { Functions map[interface{}]interface{} // map[msg]msg_handler主要用于检查 MessageBoxChan chan *InputMessage // 消息队列 Pending int // 用于记录当前排队的消息数量 // contains filtered or unexported fields }
func NewLocalServer ¶
func NewLocalServer(length int) *LocalServer
func (*LocalServer) Check ¶
func (server *LocalServer) Check(input *InputMessage) bool
func (*LocalServer) CloseByGrace ¶
func (server *LocalServer) CloseByGrace()
优雅的关闭server 会处理完之前剩余的消息
func (*LocalServer) Exec ¶
func (server *LocalServer) Exec(input *InputMessage)
func (*LocalServer) NewLocalClient ¶
func (server *LocalServer) NewLocalClient() *LocalClient
func (*LocalServer) Register ¶
func (server *LocalServer) Register(msg interface{}, msgHandler interface{}) error
先注册再使用
type LocalTimerServer ¶
type LocalTimerServer struct { Id uint64 // 自增的序列号 JobList *rbtree.Rbtree // 基于内存的事件容器 Count uint64 // 统计已执行的任务次数 PauseChan chan struct{} // 暂停 ResumeChan chan struct{} // 重置 ExitChan chan struct{} // 退出 }
func NewLocalTimerServer ¶
func NewLocalTimerServer() *LocalTimerServer
func (*LocalTimerServer) AddJobRepeat ¶
func (server *LocalTimerServer) AddJobRepeat(jobInterval time.Duration, times uint64, jobFunc MessageHandler1, args []interface{}) (Ijob, bool)
添加重复任务
func (*LocalTimerServer) AddJobWithDeadtime ¶
func (server *LocalTimerServer) AddJobWithDeadtime(deadtime time.Time, jobFunc MessageHandler1, args []interface{}) (Ijob, bool)
添加单次任务,适用于特定时期的活动等类型的任务
func (*LocalTimerServer) AddJobWithInterval ¶
func (server *LocalTimerServer) AddJobWithInterval(timeout time.Duration, jobFunc MessageHandler1, args []interface{}) (Ijob, bool)
添加单次任务,适用于单次定时业务逻辑
func (*LocalTimerServer) GetCount ¶
func (server *LocalTimerServer) GetCount() uint64
获取server当前执行次数
func (*LocalTimerServer) Reset ¶
func (server *LocalTimerServer) Reset() *LocalTimerServer
重置server的内部状态
func (*LocalTimerServer) StopByGrace ¶
func (server *LocalTimerServer) StopByGrace()
优雅的关闭 会依次执行一次(不按照actiontime)
func (*LocalTimerServer) UpdateJobTimeout ¶
func (server *LocalTimerServer) UpdateJobTimeout(job Ijob, timeout time.Duration) bool
重设指定任务的超时时间
type MessageHandler1 ¶
type MessageHandler1 func([]interface{})
type MessageHandler2 ¶
type MessageHandler2 func([]interface{}) interface{}
type MessageHandler3 ¶
type MessageHandler3 func([]interface{}) []interface{}
type MessageHandlerRet1 ¶
type MessageHandlerRet1 []interface{}
type MessageHandlerRet2 ¶
type MessageHandlerRet2 interface{}
type OutputMessage ¶
type OutputMessage struct { Err error Ret []interface{} }
Click to show internal directories.
Click to hide internal directories.