1st
This commit is contained in:
627
proto/proto.go
627
proto/proto.go
@@ -2,24 +2,26 @@ package proto
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
octopus "gordenko.dev/dima/diploma"
|
||||
"gordenko.dev/dima/diploma"
|
||||
"gordenko.dev/dima/diploma/bin"
|
||||
"gordenko.dev/dima/diploma/bufreader"
|
||||
)
|
||||
|
||||
const (
|
||||
TypeDeleteMeasures byte = 1
|
||||
TypeListCurrentValues byte = 2
|
||||
TypeListInstantMeasures byte = 3
|
||||
TypeListCumulativeMeasures byte = 33
|
||||
TypeListInstantPeriods byte = 4
|
||||
TypeListCumulativePeriods byte = 44
|
||||
TypeGetMetric byte = 5
|
||||
TypeAddMetric byte = 6
|
||||
TypeDeleteMeasures byte = 1
|
||||
TypeListCurrentValues byte = 2
|
||||
TypeListInstantMeasures byte = 3
|
||||
TypeListCumulativeMeasures byte = 33
|
||||
|
||||
TypeListInstantPeriods byte = 4
|
||||
TypeListCumulativePeriods byte = 44
|
||||
TypeGetMetric byte = 5
|
||||
TypeAddMetric byte = 6
|
||||
|
||||
TypeListAllInstantMeasures byte = 8
|
||||
TypeListAllCumulativeMeasures byte = 88
|
||||
TypeRangeTotal byte = 9
|
||||
TypeAppendMeasure byte = 10
|
||||
TypeAppendMeasures byte = 11
|
||||
TypeDeleteMetric byte = 12
|
||||
@@ -66,218 +68,65 @@ func ErrorCodeToText(code uint16) string {
|
||||
}
|
||||
}
|
||||
|
||||
type GetMetricReq struct {
|
||||
MetricID uint32
|
||||
}
|
||||
// common
|
||||
|
||||
type ListCurrentValuesReq struct {
|
||||
MetricIDs []uint32
|
||||
}
|
||||
|
||||
type AddMetricReq struct {
|
||||
type Metric struct {
|
||||
MetricID uint32
|
||||
MetricType octopus.MetricType
|
||||
MetricType diploma.MetricType
|
||||
FracDigits int
|
||||
}
|
||||
|
||||
type UpdateMetricReq struct {
|
||||
MetricID uint32
|
||||
MetricType octopus.MetricType
|
||||
FracDigits int
|
||||
type AppendError struct {
|
||||
MetricID uint32
|
||||
ErrorCode uint16
|
||||
}
|
||||
|
||||
type DeleteMetricReq struct {
|
||||
MetricID uint32
|
||||
type TimeBound struct {
|
||||
Year int
|
||||
Month time.Month
|
||||
Day int
|
||||
}
|
||||
|
||||
type DeleteMeasuresReq struct {
|
||||
MetricID uint32
|
||||
Since uint32 // timestamp (optional)
|
||||
type CumulativeMeasure struct {
|
||||
Timestamp uint32
|
||||
Value float64
|
||||
Total float64
|
||||
}
|
||||
|
||||
type AppendMeasureReq struct {
|
||||
type CumulativePeriod struct {
|
||||
Period uint32
|
||||
Since uint32
|
||||
Until uint32
|
||||
EndValue float64
|
||||
Total float64
|
||||
}
|
||||
|
||||
type InstantMeasure struct {
|
||||
Timestamp uint32
|
||||
Value float64
|
||||
}
|
||||
|
||||
type InstantPeriod struct {
|
||||
Period uint32
|
||||
Since uint32
|
||||
Until uint32
|
||||
Min float64
|
||||
Max float64
|
||||
Avg float64
|
||||
}
|
||||
|
||||
type CurrentValue struct {
|
||||
MetricID uint32
|
||||
Timestamp uint32
|
||||
Value float64
|
||||
}
|
||||
|
||||
type ListAllInstantMetricMeasuresReq struct {
|
||||
// API reqs
|
||||
|
||||
type GetMetricReq struct {
|
||||
MetricID uint32
|
||||
}
|
||||
|
||||
type ListAllCumulativeMeasuresReq struct {
|
||||
MetricID uint32
|
||||
}
|
||||
|
||||
type ListInstantMeasuresReq struct {
|
||||
MetricID uint32
|
||||
Since uint32
|
||||
Until uint32
|
||||
FirstHourOfDay int
|
||||
}
|
||||
|
||||
type ListCumulativeMeasuresReq struct {
|
||||
MetricID uint32
|
||||
Since uint32
|
||||
Until uint32
|
||||
FirstHourOfDay int
|
||||
}
|
||||
|
||||
type ListInstantPeriodsReq struct {
|
||||
MetricID uint32
|
||||
Since uint32
|
||||
Until uint32
|
||||
GroupBy octopus.GroupBy
|
||||
AggregateFuncs byte
|
||||
FirstHourOfDay int
|
||||
LastDayOfMonth int
|
||||
}
|
||||
|
||||
type ListCumulativePeriodsReq struct {
|
||||
MetricID uint32
|
||||
Since uint32
|
||||
Until uint32
|
||||
GroupBy octopus.GroupBy
|
||||
FirstHourOfDay int
|
||||
LastDayOfMonth int
|
||||
}
|
||||
|
||||
type Metric struct {
|
||||
MetricID uint32
|
||||
MetricType octopus.MetricType
|
||||
FracDigits int
|
||||
}
|
||||
|
||||
type RangeTotalReq struct {
|
||||
MetricID uint32
|
||||
Since uint32
|
||||
Until uint32
|
||||
}
|
||||
|
||||
func PackAddMetricReq(req AddMetricReq) []byte {
|
||||
arr := []byte{
|
||||
TypeAddMetric,
|
||||
0, 0, 0, 0, //
|
||||
byte(req.MetricType),
|
||||
byte(req.FracDigits),
|
||||
}
|
||||
bin.PutUint32(arr[1:], req.MetricID)
|
||||
return arr
|
||||
}
|
||||
|
||||
func PackDeleteMetricReq(req DeleteMetricReq) []byte {
|
||||
arr := []byte{
|
||||
TypeDeleteMetric,
|
||||
0, 0, 0, 0, // metricID
|
||||
}
|
||||
bin.PutUint32(arr[1:], req.MetricID)
|
||||
return arr
|
||||
}
|
||||
|
||||
func PackAppendMeasure(req AppendMeasureReq) []byte {
|
||||
arr := []byte{
|
||||
TypeAppendMeasure,
|
||||
0, 0, 0, 0, // metricID
|
||||
0, 0, 0, 0, // timestamp
|
||||
0, 0, 0, 0, 0, 0, 0, 0, // value
|
||||
}
|
||||
bin.PutUint32(arr[1:], req.MetricID)
|
||||
bin.PutUint32(arr[5:], uint32(req.Timestamp))
|
||||
bin.PutFloat64(arr[9:], req.Value)
|
||||
return arr
|
||||
}
|
||||
|
||||
func PackDeleteMeasuresReq(req DeleteMeasuresReq) []byte {
|
||||
arr := []byte{
|
||||
TypeDeleteMeasures,
|
||||
0, 0, 0, 0, // metricID
|
||||
0, 0, 0, 0, // since
|
||||
}
|
||||
bin.PutUint32(arr[1:], req.MetricID)
|
||||
bin.PutUint32(arr[5:], uint32(req.Since))
|
||||
return arr
|
||||
}
|
||||
|
||||
// UNPACK reqs
|
||||
|
||||
func UnpackAddMetricReq(arr []byte) (m AddMetricReq) {
|
||||
m.MetricID = bin.GetUint32(arr)
|
||||
m.MetricType = octopus.MetricType(arr[4])
|
||||
m.FracDigits = int(arr[5])
|
||||
return
|
||||
}
|
||||
|
||||
func UnpackUpdateMetricReq(arr []byte) (m UpdateMetricReq) {
|
||||
m.MetricID = bin.GetUint32(arr)
|
||||
m.MetricType = octopus.MetricType(arr[4])
|
||||
m.FracDigits = int(arr[5])
|
||||
return
|
||||
}
|
||||
|
||||
func UnpackDeleteMetricReq(arr []byte) (m DeleteMetricReq) {
|
||||
m.MetricID = bin.GetUint32(arr)
|
||||
return
|
||||
}
|
||||
|
||||
func UnpackAppendMeasureReq(arr []byte) (m AppendMeasureReq) {
|
||||
m.MetricID = bin.GetUint32(arr)
|
||||
m.Timestamp = bin.GetUint32(arr[4:])
|
||||
m.Value = bin.GetFloat64(arr[8:])
|
||||
return
|
||||
}
|
||||
|
||||
func UnpackDeleteMeasuresReq(arr []byte) (m DeleteMeasuresReq) {
|
||||
m.MetricID = bin.GetUint32(arr)
|
||||
m.Since = bin.GetUint32(arr[4:])
|
||||
return
|
||||
}
|
||||
|
||||
func UnpackListInstantMeasuresReq(arr []byte) (m ListInstantMeasuresReq) {
|
||||
m.MetricID = bin.GetUint32(arr[0:])
|
||||
m.Since = bin.GetUint32(arr[4:])
|
||||
m.Until = bin.GetUint32(arr[8:])
|
||||
m.FirstHourOfDay = int(arr[12])
|
||||
return
|
||||
}
|
||||
|
||||
func UnpackListCumulativeMeasuresReq(arr []byte) (m ListCumulativeMeasuresReq) {
|
||||
m.MetricID = bin.GetUint32(arr)
|
||||
m.Since = bin.GetUint32(arr[4:])
|
||||
m.Until = bin.GetUint32(arr[8:])
|
||||
m.FirstHourOfDay = int(arr[12])
|
||||
return
|
||||
}
|
||||
|
||||
func UnpackListInstantPeriodsReq(arr []byte) (m ListInstantPeriodsReq) {
|
||||
m.MetricID = bin.GetUint32(arr)
|
||||
m.Since = bin.GetUint32(arr[4:])
|
||||
m.Until = bin.GetUint32(arr[8:])
|
||||
m.GroupBy = octopus.GroupBy(arr[12])
|
||||
m.AggregateFuncs = arr[13]
|
||||
m.FirstHourOfDay = int(arr[14])
|
||||
m.LastDayOfMonth = int(arr[15])
|
||||
return
|
||||
}
|
||||
|
||||
func UnpackListCumulativePeriodsReq(arr []byte) (m ListCumulativePeriodsReq) {
|
||||
m.MetricID = bin.GetUint32(arr[0:])
|
||||
m.Since = bin.GetUint32(arr[4:])
|
||||
m.Until = bin.GetUint32(arr[8:])
|
||||
m.GroupBy = octopus.GroupBy(arr[12])
|
||||
m.FirstHourOfDay = int(arr[13])
|
||||
m.LastDayOfMonth = int(arr[14])
|
||||
return
|
||||
}
|
||||
|
||||
func UnpackRangeTotalReq(arr []byte) (m RangeTotalReq) {
|
||||
m.MetricID = bin.GetUint32(arr)
|
||||
m.Since = bin.GetUint32(arr[4:])
|
||||
m.Until = bin.GetUint32(arr[8:])
|
||||
return
|
||||
}
|
||||
|
||||
// READ reqs
|
||||
|
||||
func ReadGetMetricReq(r *bufreader.BufferedReader) (m GetMetricReq, err error) {
|
||||
m.MetricID, err = bin.ReadUint32(r)
|
||||
if err != nil {
|
||||
@@ -287,112 +136,8 @@ func ReadGetMetricReq(r *bufreader.BufferedReader) (m GetMetricReq, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func ReadAddMetricReq(r *bufreader.BufferedReader) (m AddMetricReq, err error) {
|
||||
arr, err := r.ReadN(6)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return UnpackAddMetricReq(arr), nil
|
||||
}
|
||||
|
||||
func ReadUpdateMetricReq(r *bufreader.BufferedReader) (m UpdateMetricReq, err error) {
|
||||
arr, err := r.ReadN(6)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return UnpackUpdateMetricReq(arr), nil
|
||||
}
|
||||
|
||||
func ReadDeleteMetricReq(r *bufreader.BufferedReader) (m DeleteMetricReq, err error) {
|
||||
m.MetricID, err = bin.ReadUint32(r)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func ReadAppendMeasureReq(r *bufreader.BufferedReader) (m AppendMeasureReq, err error) {
|
||||
arr, err := r.ReadN(16)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return UnpackAppendMeasureReq(arr), nil
|
||||
}
|
||||
|
||||
func ReadDeleteMeasuresReq(r *bufreader.BufferedReader) (m DeleteMeasuresReq, err error) {
|
||||
arr, err := r.ReadN(8)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return UnpackDeleteMeasuresReq(arr), nil
|
||||
}
|
||||
|
||||
func ReadListAllInstantMeasuresReq(r *bufreader.BufferedReader) (m ListAllInstantMetricMeasuresReq, err error) {
|
||||
m.MetricID, err = bin.ReadUint32(r)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func ReadListAllCumulativeMeasuresReq(r *bufreader.BufferedReader) (m ListAllCumulativeMeasuresReq, err error) {
|
||||
m.MetricID, err = bin.ReadUint32(r)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func ReadListInstantMeasuresReq(r *bufreader.BufferedReader) (m ListInstantMeasuresReq, err error) {
|
||||
arr, err := r.ReadN(13)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return UnpackListInstantMeasuresReq(arr), nil
|
||||
}
|
||||
|
||||
func ReadListCumulativeMeasuresReq(r *bufreader.BufferedReader) (m ListCumulativeMeasuresReq, err error) {
|
||||
arr, err := r.ReadN(13)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return UnpackListCumulativeMeasuresReq(arr), nil
|
||||
}
|
||||
|
||||
func ReadListInstantPeriodsReq(r *bufreader.BufferedReader) (m ListInstantPeriodsReq, err error) {
|
||||
arr, err := r.ReadN(16)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return UnpackListInstantPeriodsReq(arr), nil
|
||||
}
|
||||
|
||||
func ReadListCumulativePeriodsReq(r *bufreader.BufferedReader) (m ListCumulativePeriodsReq, err error) {
|
||||
arr, err := r.ReadN(15)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return UnpackListCumulativePeriodsReq(arr), nil
|
||||
}
|
||||
|
||||
func ReadRangeTotalReq(r *bufreader.BufferedReader) (m RangeTotalReq, err error) {
|
||||
arr, err := r.ReadN(12)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return UnpackRangeTotalReq(arr), nil
|
||||
type ListCurrentValuesReq struct {
|
||||
MetricIDs []uint32
|
||||
}
|
||||
|
||||
func ReadListCurrentValuesReq(r *bufreader.BufferedReader) (m ListCurrentValuesReq, err error) {
|
||||
@@ -414,6 +159,83 @@ func ReadListCurrentValuesReq(r *bufreader.BufferedReader) (m ListCurrentValuesR
|
||||
return
|
||||
}
|
||||
|
||||
type AddMetricReq struct {
|
||||
MetricID uint32
|
||||
MetricType diploma.MetricType
|
||||
FracDigits int
|
||||
}
|
||||
|
||||
func ReadAddMetricReq(r *bufreader.BufferedReader) (m AddMetricReq, err error) {
|
||||
arr, err := r.ReadN(6)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return UnpackAddMetricReq(arr), nil
|
||||
}
|
||||
|
||||
func UnpackAddMetricReq(arr []byte) (m AddMetricReq) {
|
||||
m.MetricID = bin.GetUint32(arr)
|
||||
m.MetricType = diploma.MetricType(arr[4])
|
||||
m.FracDigits = int(arr[5])
|
||||
return
|
||||
}
|
||||
|
||||
type DeleteMetricReq struct {
|
||||
MetricID uint32
|
||||
}
|
||||
|
||||
func ReadDeleteMetricReq(r *bufreader.BufferedReader) (m DeleteMetricReq, err error) {
|
||||
m.MetricID, err = bin.ReadUint32(r)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
type DeleteMeasuresReq struct {
|
||||
MetricID uint32
|
||||
Since uint32 // timestamp (optional)
|
||||
}
|
||||
|
||||
func ReadDeleteMeasuresReq(r *bufreader.BufferedReader) (m DeleteMeasuresReq, err error) {
|
||||
arr, err := r.ReadN(8)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return UnpackDeleteMeasuresReq(arr), nil
|
||||
}
|
||||
|
||||
func UnpackDeleteMeasuresReq(arr []byte) (m DeleteMeasuresReq) {
|
||||
m.MetricID = bin.GetUint32(arr)
|
||||
m.Since = bin.GetUint32(arr[4:])
|
||||
return
|
||||
}
|
||||
|
||||
type AppendMeasureReq struct {
|
||||
MetricID uint32
|
||||
Timestamp uint32
|
||||
Value float64
|
||||
}
|
||||
|
||||
func ReadAppendMeasureReq(r *bufreader.BufferedReader) (m AppendMeasureReq, err error) {
|
||||
arr, err := r.ReadN(16)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return UnpackAppendMeasureReq(arr), nil
|
||||
}
|
||||
|
||||
func UnpackAppendMeasureReq(arr []byte) (m AppendMeasureReq) {
|
||||
m.MetricID = bin.GetUint32(arr)
|
||||
m.Timestamp = bin.GetUint32(arr[4:])
|
||||
m.Value = bin.GetFloat64(arr[8:])
|
||||
return
|
||||
}
|
||||
|
||||
type AppendMeasuresReq struct {
|
||||
MetricID uint32
|
||||
Measures []Measure
|
||||
@@ -424,27 +246,6 @@ type Measure struct {
|
||||
Value float64
|
||||
}
|
||||
|
||||
func PackAppendMeasures(req AppendMeasuresReq) []byte {
|
||||
if len(req.Measures) > 65535 {
|
||||
panic(fmt.Errorf("wrong measures qty: %d", len(req.Measures)))
|
||||
}
|
||||
var (
|
||||
prefixSize = 7
|
||||
recordSize = 12
|
||||
arr = make([]byte, prefixSize+len(req.Measures)*recordSize)
|
||||
)
|
||||
arr[0] = TypeAppendMeasures
|
||||
bin.PutUint32(arr[1:], req.MetricID)
|
||||
bin.PutUint16(arr[5:], uint16(len(req.Measures)))
|
||||
pos := prefixSize
|
||||
for _, measure := range req.Measures {
|
||||
bin.PutUint32(arr[pos:], measure.Timestamp)
|
||||
bin.PutFloat64(arr[pos+4:], measure.Value)
|
||||
pos += recordSize
|
||||
}
|
||||
return arr
|
||||
}
|
||||
|
||||
func ReadAppendMeasuresReq(r *bufreader.BufferedReader) (m AppendMeasuresReq, err error) {
|
||||
prefix, err := bin.ReadN(r, 6) // metricID + measures qty
|
||||
if err != nil {
|
||||
@@ -471,3 +272,169 @@ func ReadAppendMeasuresReq(r *bufreader.BufferedReader) (m AppendMeasuresReq, er
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
type MetricMeasure struct {
|
||||
MetricID uint32
|
||||
Timestamp uint32
|
||||
Value float64
|
||||
}
|
||||
|
||||
func ReadAppendMeasurePerMetricReq(r *bufreader.BufferedReader) (measures []MetricMeasure, err error) {
|
||||
qty, err := bin.ReadUint16(r)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
var tmp = make([]byte, 16)
|
||||
for range int(qty) {
|
||||
err = bin.ReadNInto(r, tmp)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
measures = append(measures, MetricMeasure{
|
||||
MetricID: bin.GetUint32(tmp[0:]),
|
||||
Timestamp: bin.GetUint32(tmp[4:]),
|
||||
Value: bin.GetFloat64(tmp[8:]),
|
||||
})
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
type ListAllInstantMetricMeasuresReq struct {
|
||||
MetricID uint32
|
||||
}
|
||||
|
||||
func ReadListAllInstantMeasuresReq(r *bufreader.BufferedReader) (m ListAllInstantMetricMeasuresReq, err error) {
|
||||
m.MetricID, err = bin.ReadUint32(r)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
type ListAllCumulativeMeasuresReq struct {
|
||||
MetricID uint32
|
||||
}
|
||||
|
||||
func ReadListAllCumulativeMeasuresReq(r *bufreader.BufferedReader) (m ListAllCumulativeMeasuresReq, err error) {
|
||||
m.MetricID, err = bin.ReadUint32(r)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
type ListInstantMeasuresReq struct {
|
||||
MetricID uint32
|
||||
Since uint32
|
||||
Until uint32
|
||||
}
|
||||
|
||||
func ReadListInstantMeasuresReq(r *bufreader.BufferedReader) (m ListInstantMeasuresReq, err error) {
|
||||
arr, err := r.ReadN(12)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return UnpackListInstantMeasuresReq(arr), nil
|
||||
}
|
||||
|
||||
func UnpackListInstantMeasuresReq(arr []byte) (m ListInstantMeasuresReq) {
|
||||
m.MetricID = bin.GetUint32(arr[0:])
|
||||
m.Since = bin.GetUint32(arr[4:])
|
||||
m.Until = bin.GetUint32(arr[8:])
|
||||
return
|
||||
}
|
||||
|
||||
type ListCumulativeMeasuresReq struct {
|
||||
MetricID uint32
|
||||
Since uint32
|
||||
Until uint32
|
||||
}
|
||||
|
||||
func ReadListCumulativeMeasuresReq(r *bufreader.BufferedReader) (m ListCumulativeMeasuresReq, err error) {
|
||||
arr, err := r.ReadN(12)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return UnpackListCumulativeMeasuresReq(arr), nil
|
||||
}
|
||||
|
||||
func UnpackListCumulativeMeasuresReq(arr []byte) (m ListCumulativeMeasuresReq) {
|
||||
m.MetricID = bin.GetUint32(arr)
|
||||
m.Since = bin.GetUint32(arr[4:])
|
||||
m.Until = bin.GetUint32(arr[8:])
|
||||
return
|
||||
}
|
||||
|
||||
type ListInstantPeriodsReq struct {
|
||||
MetricID uint32
|
||||
Since TimeBound
|
||||
Until TimeBound
|
||||
GroupBy diploma.GroupBy
|
||||
AggregateFuncs byte
|
||||
FirstHourOfDay int
|
||||
}
|
||||
|
||||
func ReadListInstantPeriodsReq(r *bufreader.BufferedReader) (m ListInstantPeriodsReq, err error) {
|
||||
arr, err := r.ReadN(15)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return UnpackListInstantPeriodsReq(arr), nil
|
||||
}
|
||||
|
||||
func UnpackListInstantPeriodsReq(arr []byte) (m ListInstantPeriodsReq) {
|
||||
m.MetricID = bin.GetUint32(arr)
|
||||
m.Since = TimeBound{
|
||||
Year: int(bin.GetUint16(arr[4:])),
|
||||
Month: time.Month(arr[6]),
|
||||
Day: int(arr[7]),
|
||||
}
|
||||
m.Until = TimeBound{
|
||||
Year: int(bin.GetUint16(arr[8:])),
|
||||
Month: time.Month(arr[10]),
|
||||
Day: int(arr[11]),
|
||||
}
|
||||
m.GroupBy = diploma.GroupBy(arr[12])
|
||||
m.AggregateFuncs = arr[13]
|
||||
m.FirstHourOfDay = int(arr[14])
|
||||
return
|
||||
}
|
||||
|
||||
type ListCumulativePeriodsReq struct {
|
||||
MetricID uint32
|
||||
Since TimeBound
|
||||
Until TimeBound
|
||||
GroupBy diploma.GroupBy
|
||||
FirstHourOfDay int
|
||||
}
|
||||
|
||||
func ReadListCumulativePeriodsReq(r *bufreader.BufferedReader) (m ListCumulativePeriodsReq, err error) {
|
||||
arr, err := r.ReadN(14)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("read req: %s", err)
|
||||
return
|
||||
}
|
||||
return UnpackListCumulativePeriodsReq(arr), nil
|
||||
}
|
||||
|
||||
func UnpackListCumulativePeriodsReq(arr []byte) (m ListCumulativePeriodsReq) {
|
||||
m.MetricID = bin.GetUint32(arr[0:])
|
||||
m.Since = TimeBound{
|
||||
Year: int(bin.GetUint16(arr[4:])),
|
||||
Month: time.Month(arr[6]),
|
||||
Day: int(arr[7]),
|
||||
}
|
||||
m.Until = TimeBound{
|
||||
Year: int(bin.GetUint16(arr[8:])),
|
||||
Month: time.Month(arr[10]),
|
||||
Day: int(arr[11]),
|
||||
}
|
||||
m.GroupBy = diploma.GroupBy(arr[12])
|
||||
m.FirstHourOfDay = int(arr[13])
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user