一起来读源码204-Ipfs commands

摘要:

日志请求入口的维护和定时清除

 

详情:

定义结构体:

// 上下文

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)     //结束

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值