摘要:
日志请求入口的维护和定时清除
详情:
定义结构体:
// 上下文
type Context struct{
ConfigRoot string
ReqLog *ReqLog//请求日志
Plugins *loader.PluginLoader//插件集合
LoadConfig func(path string)(*config.Config, error) //加载配置文件函数
Gateway bool
api coreiface.CoreAPI//核心api
node *core.IpfsNode//节点
config *config.Config//配置
ConstructNode func()(*core.IpfsNode, error)//构造节点函数
}
func (c *Context) GetConfig()(*config.Config, error)//返回配置
func (c *Context) GetNode()(*core.IpfsNode, error)//返回当前节点
func (c *Context) GetAPI()(coreiface.CoreAPI, error)//返回core api,如果不存在就新建
func (c *Context) Context() context.Context//返回节点上下文
func (c *Context) LogRequest(req *cmds.Request) func() //添加日志请求入口,并返回结束函数
func (c *Context) Close()//关闭上下文
//日志请求入口
type ReqLogEntry struct {
StartTime time.Time//开始时间
EndTime time.Time//结束时间
Active bool//是否在运行
Command string//命令
Options map[string]interface{} //选项
Args []string//参数
ID int
log *ReqLog //请求log
}
func (r *ReqLogEntry) Copy() *ReqLogEntry //重用日志请求入口
//请求日志
type ReqLog struct {
Requests []*ReqLogEntry //入口集合
nextID int //下一个日志id
lock sync.Mutex //互斥锁
keep time.Duration //日志寿命
}
func (rl *ReqLog) AddEntry(rle *ReqLogEntry) //添加日志入口
func (rl *ReqLog) ClearInactive() //请求不活跃的日志
func (rl *ReqLog) SetKeepTime(t time.Duration) //设置日志寿命
func (rl *ReqLog) Report() []*ReqLogEntry //报告入口
func (rl *ReqLog) Finish(rle *ReqLogEntry) //结束