-
Notifications
You must be signed in to change notification settings - Fork 345
Expand file tree
/
Copy pathtimestream.go
More file actions
73 lines (61 loc) · 1.7 KB
/
timestream.go
File metadata and controls
73 lines (61 loc) · 1.7 KB
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package query
import (
"fmt"
"sync"
)
// Timestream encodes a Timestream request. This will be serialized for use
// by the tsbs_run_queries_timestream program.
type Timestream struct {
HumanLabel []byte
HumanDescription []byte
Table []byte // e.g. "cpu"
SqlQuery []byte
id uint64
}
// TimestreamPool is a sync.Pool of Timestream Query types
var TimestreamPool = sync.Pool{
New: func() interface{} {
return &Timestream{
HumanLabel: make([]byte, 0, 1024),
HumanDescription: make([]byte, 0, 1024),
Table: make([]byte, 0, 50),
SqlQuery: make([]byte, 0, 1024),
}
},
}
// NewTimestream returns a new Timestream Query instance
func NewTimestream() *Timestream {
return TimestreamPool.Get().(*Timestream)
}
// GetID returns the ID of this Query
func (q *Timestream) GetID() uint64 {
return q.id
}
// SetID sets the ID for this Query
func (q *Timestream) SetID(n uint64) {
q.id = n
}
// String produces a debug-ready description of a Query.
func (q *Timestream) String() string {
return fmt.Sprintf(
"HumanLabel: %s, HumanDescription: %s, Table: %s, Query: %s",
q.HumanLabel, q.HumanDescription, q.Table, q.SqlQuery,
)
}
// HumanLabelName returns the human readable name of this Query
func (q *Timestream) HumanLabelName() []byte {
return q.HumanLabel
}
// HumanDescriptionName returns the human readable description of this Query
func (q *Timestream) HumanDescriptionName() []byte {
return q.HumanDescription
}
// Release resets and returns this Query to its pool
func (q *Timestream) Release() {
q.HumanLabel = q.HumanLabel[:0]
q.HumanDescription = q.HumanDescription[:0]
q.id = 0
q.Table = q.Table[:0]
q.SqlQuery = q.SqlQuery[:0]
TimestreamPool.Put(q)
}