-
Notifications
You must be signed in to change notification settings - Fork 0
/
model.go
48 lines (40 loc) · 1.21 KB
/
model.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package kyshkyshmeow
import (
"github.com/thefrol/kysh-kysh-meow/internal/metrica"
"github.com/thefrol/kysh-kysh-meow/internal/server/app/metricas"
)
// Gauge используется чтобы передавать
// изменение величины
type Gauge struct {
// имя величины
ID string
// новое значение
Value float64
}
func (g Gauge) toM() metricas.Metrica {
return metrica.Metrica{
MType: metrica.GaugeName,
ID: g.ID,
Value: &g.Value, // [bug] отправится в кучу
}
}
// Counter используется чтобы передавать
// изменение счетчика
type Counter struct {
// имя счетчика
ID string
// изменение счетчика
Delta int64
}
func (c Counter) toM() metricas.Metrica {
// BUG(frolenkodima): при упаковке джейсон происходит много аллоков памяти
return metrica.Metrica{
MType: metrica.CounterName,
ID: c.ID,
Delta: &c.Delta, // [bug] отправится в кучу
}
}
// metrer представляет интерфейс для передаваемой на сервер метрики
type metrer interface {
toM() metrica.Metrica
}