package diploma import ( "fmt" "os" ) type MetricType byte type GroupBy byte const ( Cumulative MetricType = 1 Instant MetricType = 2 MaxFracDigits byte = 7 GroupByHour GroupBy = 1 GroupByDay GroupBy = 2 GroupByMonth GroupBy = 3 AggregateMin byte = 1 AggregateMax byte = 2 AggregateAvg byte = 4 ) type TimestampCompressor interface { CalcRequiredSpace(uint32) int Append(uint32) Size() int DeleteLast() //LastTimestamp() uint32 } type ValueCompressor interface { CalcRequiredSpace(float64) int Append(float64) Size() int DeleteLast() //LastValue() float64 } type TimestampDecompressor interface { NextValue() (uint32, bool) } type ValueDecompressor interface { NextValue() (float64, bool) } type MeasureConsumer interface { Feed(uint32, float64) FeedNoSend(uint32, float64) Close() error } type WorkerMeasureConsumer interface { FeedNoSend(uint32, float64) } type AtreeMeasureConsumer interface { Feed(uint32, float64) } type AbortCode int const ( // Fatal errors WrongPrevPageNo AbortCode = 1 WriteToAtreeFailed AbortCode = 2 MaxAtreeSizeExceeded AbortCode = 3 FailedWriteToTxLog AbortCode = 4 ReferenceCountBug AbortCode = 5 WrongResultCodeBug AbortCode = 6 RemoveREDOFileFailed AbortCode = 7 FailedAtreeRequest AbortCode = 8 UnknownTxLogRecordTypeBug AbortCode = 11 HasTimestampNoValueBug AbortCode = 12 NoMetricBug AbortCode = 13 NoLockEntryBug AbortCode = 14 NoXLockBug AbortCode = 15 MetricAddedBug AbortCode = 16 NoRLockBug AbortCode = 17 XLockBug AbortCode = 18 FailedFreeListSerialize AbortCode = 19 UnknownWorkerQueueItemBug AbortCode = 20 UnknownMetricWaitQueueItemBug AbortCode = 21 // GetRecoveryRecipeFailed AbortCode = 26 LoadSnapshotFailed AbortCode = 27 ReplayChangesFailed AbortCode = 28 CreateChangesWriterFailed AbortCode = 29 RemoveRecipeFileFailed AbortCode = 30 DumpSnapshotFailed AbortCode = 31 SearchREDOFilesFailed AbortCode = 32 ReplayREDOFileFailed AbortCode = 33 DeletePrevChangesFileFailed AbortCode = 34 DeletePrevSnapshotFileFailed AbortCode = 35 ) func Abort(code AbortCode, err error) { fmt.Println(err) os.Exit(int(code)) }