本文整理汇总了Golang中github.com/SoftwareDefinedBuildings/btrdb.Quasar.InsertValues方法的典型用法代码示例。如果您正苦于以下问题:Golang Quasar.InsertValues方法的具体用法?Golang Quasar.InsertValues怎么用?Golang Quasar.InsertValues使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/SoftwareDefinedBuildings/btrdb.Quasar
的用法示例。
在下文中一共展示了Quasar.InsertValues方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: request_post_INSERT
func request_post_INSERT(q *btrdb.Quasar, w http.ResponseWriter, r *http.Request) {
atomic.AddInt32(&outstandingHttpReqs, 1)
defer func() {
atomic.AddInt32(&outstandingHttpReqs, -1)
}()
then := time.Now()
dec := json.NewDecoder(r.Body)
var ins insert_t
dec.UseNumber()
err := dec.Decode(&ins)
if err != nil {
doError(w, "malformed quasar HTTP insert")
return
}
id := uuid.Parse(ins.Uuid)
if id == nil {
doError(w, "malformed uuid")
return
}
//log.Printf("Got %+v", ins)
recs := make([]qtree.Record, len(ins.Readings))
//Check the format of the insert and copy to Record
for i := 0; i < len(ins.Readings); i++ {
if len(ins.Readings[i]) != 2 {
doError(w, fmt.Sprintf("reading %d is malformed", i))
return
}
t, ok, msg := parseInt(string(ins.Readings[i][0].(json.Number)), btrdb.MinimumTime, btrdb.MaximumTime)
if !ok {
doError(w, fmt.Sprintf("reading %d time malformed: %s", i, msg))
return
}
val, err := strconv.ParseFloat(string(ins.Readings[i][1].(json.Number)), 64)
if err != nil {
doError(w, fmt.Sprintf("value %d malformed: %s", i, err))
return
}
recs[i].Time = t
recs[i].Val = val
}
q.InsertValues(id, recs)
//log.Printf("got %+v", recs)
delta := time.Now().Sub(then)
w.Write([]byte(fmt.Sprintf("OK %d records, %.2f ms\n", len(recs), float64(delta.Nanoseconds()/1000)/1000)))
}
示例2: dispatchCommands
//.........这里部分代码省略.........
rvers.SetVersions(vlist)
resp.SetVersionList(rvers)
resp.SetFinal(true)
sendresp(rvseg)
case REQUEST_QUERYNEARESTVALUE:
resp, rvseg := mkresp()
t := req.QueryNearestValue().Time()
id := uuid.UUID(req.QueryNearestValue().Uuid())
ver := req.QueryNearestValue().Version()
if ver == 0 {
ver = btrdb.LatestGeneration
}
back := req.QueryNearestValue().Backward()
rv, gen, err := q.QueryNearestValue(id, t, back, ver)
switch err {
case nil:
resp.SetStatusCode(STATUSCODE_OK)
records := NewRecords(rvseg)
rl := NewRecordList(rvseg, 1)
rla := rl.ToArray()
rla[0].SetTime(rv.Time)
rla[0].SetValue(rv.Val)
records.SetVersion(gen)
records.SetValues(rl)
resp.SetRecords(records)
case qtree.ErrNoSuchPoint:
resp.SetStatusCode(STATUSCODE_NOSUCHPOINT)
default:
resp.SetStatusCode(STATUSCODE_INTERNALERROR)
}
resp.SetFinal(true)
sendresp(rvseg)
case REQUEST_QUERYCHANGEDRANGES:
resp, rvseg := mkresp()
id := uuid.UUID(req.QueryChangedRanges().Uuid())
sgen := req.QueryChangedRanges().FromGeneration()
egen := req.QueryChangedRanges().ToGeneration()
if egen == 0 {
egen = btrdb.LatestGeneration
}
resolution := req.QueryChangedRanges().Resolution()
rv, ver, err := q.QueryChangedRanges(id, sgen, egen, resolution)
switch err {
case nil:
resp.SetStatusCode(STATUSCODE_OK)
ranges := NewRanges(rvseg)
ranges.SetVersion(ver)
crl := NewChangedRangeList(rvseg, len(rv))
crla := crl.ToArray()
for i := 0; i < len(rv); i++ {
crla[i].SetStartTime(rv[i].Start)
crla[i].SetEndTime(rv[i].End)
}
ranges.SetValues(crl)
resp.SetChangedRngList(ranges)
default:
log.Critical("qcr error: ", err)
resp.SetStatusCode(STATUSCODE_INTERNALERROR)
}
resp.SetFinal(true)
sendresp(rvseg)
case REQUEST_INSERTVALUES:
resp, rvseg := mkresp()
uuid := uuid.UUID(req.InsertValues().Uuid())
rl := req.InsertValues().Values()
rla := rl.ToArray()
if len(rla) != 0 {
qtr := make([]qtree.Record, len(rla))
for i, v := range rla {
qtr[i] = qtree.Record{Time: v.Time(), Val: v.Value()}
}
q.InsertValues(uuid, qtr)
}
if req.InsertValues().Sync() {
q.Flush(uuid)
}
resp.SetFinal(true)
resp.SetStatusCode(STATUSCODE_OK)
sendresp(rvseg)
case REQUEST_DELETEVALUES:
resp, rvseg := mkresp()
id := uuid.UUID(req.DeleteValues().Uuid())
stime := req.DeleteValues().StartTime()
etime := req.DeleteValues().EndTime()
err := q.DeleteRange(id, stime, etime)
switch err {
case nil:
resp.SetStatusCode(STATUSCODE_OK)
default:
resp.SetStatusCode(STATUSCODE_INTERNALERROR)
}
resp.SetFinal(true)
sendresp(rvseg)
default:
log.Critical("weird segment")
}
}()
}
}
示例3: request_post_LEGACYINSERT
func request_post_LEGACYINSERT(q *btrdb.Quasar, w http.ResponseWriter, r *http.Request) {
atomic.AddInt32(&outstandingHttpReqs, 1)
defer func() {
atomic.AddInt32(&outstandingHttpReqs, -1)
}()
then := time.Now()
records, err := processJSON(r.Body)
if err != nil {
doError(w, "malformed body")
return
}
for _, r := range records {
if r.UUID == "" {
continue
}
id := uuid.Parse(r.UUID)
if id == nil {
doError(w, "malformed uuid")
return
}
recs := make([]qtree.Record, len(r.Readings))
//Check the format of the insert and copy to Record
for i := 0; i < len(r.Readings); i++ {
uot := r.Properties.UnitofTime
var uotmult int64
switch uot {
default:
fallthrough
case "s":
uotmult = 1000000000
case "ms":
uotmult = 1000000
case "us":
uotmult = 1000
case "ns":
uotmult = 1
}
if len(r.Readings[i]) != 2 {
doError(w, fmt.Sprintf("reading %d of record %v is malformed", i, r.UUID))
return
}
t, ok, msg := parseInt(string(r.Readings[i][0].(json.Number)), btrdb.MinimumTime, btrdb.MaximumTime)
if !ok {
doError(w, fmt.Sprintf("reading %d time malformed: %s", i, msg))
return
}
if t >= (btrdb.MaximumTime/uotmult) || t <= (btrdb.MinimumTime/uotmult) {
doError(w, fmt.Sprintf("reading %d time out of range", i))
return
}
t *= uotmult
var val float64
bval, ok := r.Readings[i][1].(bool)
if ok {
if bval {
val = 1
} else {
val = 0
}
} else {
val, err = strconv.ParseFloat(string(r.Readings[i][1].(json.Number)), 64)
if err != nil {
doError(w, fmt.Sprintf("value %d malformed: %s", i, err))
return
}
}
recs[i].Time = t
recs[i].Val = val
}
q.InsertValues(id, recs)
}
delta := time.Now().Sub(then)
w.Write([]byte(fmt.Sprintf("OK %.2f ms\n", float64(delta.Nanoseconds()/1000)/1000)))
}