github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/system/trace/operate.go (about)

     1  package trace
     2  
     3  type operateInfo struct {
     4  	TimeCost int64 `json:"timeCost"`
     5  	LastCall int64 `json:"lastCall"`
     6  	started  bool
     7  }
     8  
     9  func newOperateInfo() *operateInfo {
    10  	tmp := &operateInfo{
    11  		LastCall: getNowTimeMs(),
    12  	}
    13  	return tmp
    14  }
    15  
    16  func (s *operateInfo) StartOper() {
    17  	if s.started {
    18  		panic("wrong state")
    19  	}
    20  	s.started = true
    21  	s.LastCall = getNowTimeMs()
    22  }
    23  
    24  func (s *operateInfo) StopOper() {
    25  	if !s.started {
    26  		panic("wrong state")
    27  	}
    28  	s.started = false
    29  	callTime := getNowTimeMs() - s.LastCall
    30  	s.TimeCost += callTime
    31  }