github.com/cloudwego/hertz@v0.9.3/internal/stats/stats_util.go (about) 1 /* 2 * Copyright 2022 CloudWeGo Authors 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package stats 18 19 import ( 20 "github.com/cloudwego/hertz/pkg/common/tracer/stats" 21 "github.com/cloudwego/hertz/pkg/common/tracer/traceinfo" 22 ) 23 24 // Record records the event to HTTPStats. 25 func Record(ti traceinfo.TraceInfo, event stats.Event, err error) { 26 if ti == nil { 27 return 28 } 29 if err != nil { 30 ti.Stats().Record(event, stats.StatusError, err.Error()) 31 } else { 32 ti.Stats().Record(event, stats.StatusInfo, "") 33 } 34 } 35 36 // CalcEventCostUs calculates the duration between start and end and returns in microsecond. 37 func CalcEventCostUs(start, end traceinfo.Event) uint64 { 38 if start == nil || end == nil || start.IsNil() || end.IsNil() { 39 return 0 40 } 41 return uint64(end.Time().Sub(start.Time()).Microseconds()) 42 }