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  }