liubing 5 months ago
parent
commit
f588cfb1e7
3 changed files with 73 additions and 2 deletions
  1. 1 2
      cmd/tracecreator/main.go
  2. 59 0
      cmd/tracecreator/timerangegen.go
  3. 13 0
      cmd/tracecreator/timestatestore.go

+ 1 - 2
cmd/tracecreator/main.go

@@ -4,10 +4,9 @@ import (
 	"context"
 	"crypto/tls"
 	"fmt"
-	"log"
-
 	"github.com/ClickHouse/clickhouse-go/v2"
 	"github.com/ClickHouse/clickhouse-go/v2/lib/driver"
+	log "github.com/sirupsen/logrus"
 )
 
 func main() {

+ 59 - 0
cmd/tracecreator/timerangegen.go

@@ -0,0 +1,59 @@
+package main
+
+import (
+	log "github.com/sirupsen/logrus"
+	"time"
+)
+
+type TimeRange struct {
+	begin time.Time
+	end   time.Time
+}
+
+type TimeRangeGen struct {
+	lastGenTimeUpper         time.Time
+	upperTimeDurationFromNow time.Duration
+	C                        chan TimeRange
+	minRangeDuration         time.Duration
+	maxRangeDuration         time.Duration
+	stopChan                 chan bool
+	logger                   *log.Logger
+}
+
+func (tr *TimeRangeGen) start() {
+	go tr.startGen()
+	tr.logger.Infof("started")
+}
+
+func (tr *TimeRangeGen) startGen() {
+	tm := time.NewTimer(1 * time.Second)
+forLoop:
+	for {
+		select {
+		case <-tr.stopChan:
+			tr.logger.Infof("stop signal received, quit")
+			break forLoop
+		case <-tm.C:
+			tr.checkGenTimeRange()
+		}
+	}
+}
+
+func (tr *TimeRangeGen) stop() {
+	tr.stopChan <- true
+	tr.logger.Infof("stoped")
+}
+
+func (tr *TimeRangeGen) checkGenTimeRange() {
+	now := time.Now()
+	upper := now.Add(-tr.upperTimeDurationFromNow)
+	range2Gen := upper.Sub(tr.lastGenTimeUpper)
+	if range2Gen < tr.minRangeDuration {
+		tr.logger.Debugf("%v < %v, skip gen", range2Gen, tr.minRangeDuration)
+		return
+	}
+	tr.logger.Debugf("start check gen time range in [%v, %v)", tr.lastGenTimeUpper, upper)
+	for i := tr.lastGenTimeUpper; i.Before(upper); i = i.Add(tr.maxRangeDuration) {
+
+	}
+}

+ 13 - 0
cmd/tracecreator/timestatestore.go

@@ -0,0 +1,13 @@
+package main
+
+import "time"
+
+type TimeState struct {
+	lastSuccessUpperTime time.Time
+}
+type TimeStateStore struct {
+}
+
+func (t TimeStateStore) SaveTimeState(ts TimeState) {
+
+}