dubbo.apache.org/dubbo-go/v3@v3.1.1/metrics/util/aggregate/pane.go (about) 1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package aggregate 19 20 // pane represents a window over a period of time. 21 // It uses interface{} to store any type of value. 22 type pane struct { 23 startInMs int64 24 endInMs int64 25 intervalInMs int64 26 value interface{} 27 } 28 29 func newPane(intervalInMs, startInMs int64, value interface{}) *pane { 30 return &pane{ 31 startInMs: startInMs, 32 endInMs: startInMs + intervalInMs, 33 intervalInMs: intervalInMs, 34 value: value, 35 } 36 } 37 38 func (p *pane) resetTo(startInMs int64, value interface{}) { 39 p.startInMs = startInMs 40 p.endInMs = startInMs + p.intervalInMs 41 p.value = value 42 }