一起来读源码204-Ipfs commands

摘要:

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

详情:

  • context.go
  • reqlog.go

定义结构体:

// 上下文

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

你可能感兴趣的:(一起读源码,ipfs)