diff options
Diffstat (limited to 'go/storage/volume_ttl.go')
| -rw-r--r-- | go/storage/volume_ttl.go | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/go/storage/volume_ttl.go b/go/storage/volume_ttl.go deleted file mode 100644 index 4318bb048..000000000 --- a/go/storage/volume_ttl.go +++ /dev/null @@ -1,135 +0,0 @@ -package storage - -import ( - "strconv" -) - -const ( - //stored unit types - Empty byte = iota - Minute - Hour - Day - Week - Month - Year -) - -type TTL struct { - count byte - unit byte -} - -var EMPTY_TTL = &TTL{} - -// translate a readable ttl to internal ttl -// Supports format example: -// 3m: 3 minutes -// 4h: 4 hours -// 5d: 5 days -// 6w: 6 weeks -// 7M: 7 months -// 8y: 8 years -func ReadTTL(ttlString string) (*TTL, error) { - if ttlString == "" { - return EMPTY_TTL, nil - } - ttlBytes := []byte(ttlString) - unitByte := ttlBytes[len(ttlBytes)-1] - countBytes := ttlBytes[0 : len(ttlBytes)-1] - if '0' <= unitByte && unitByte <= '9' { - countBytes = ttlBytes - unitByte = 'm' - } - count, err := strconv.Atoi(string(countBytes)) - unit := toStoredByte(unitByte) - return &TTL{count: byte(count), unit: unit}, err -} - -// read stored bytes to a ttl -func LoadTTLFromBytes(input []byte) (t *TTL) { - return &TTL{count: input[0], unit: input[1]} -} - -// read stored bytes to a ttl -func LoadTTLFromUint32(ttl uint32) (t *TTL) { - input := make([]byte, 2) - input[1] = byte(ttl) - input[0] = byte(ttl >> 8) - return LoadTTLFromBytes(input) -} - -// save stored bytes to an output with 2 bytes -func (t *TTL) ToBytes(output []byte) { - output[0] = t.count - output[1] = t.unit -} - -func (t *TTL) ToUint32() (output uint32) { - output = uint32(t.count) << 8 - output += uint32(t.unit) - return output -} - -func (t *TTL) String() string { - if t == nil || t.count == 0 { - return "" - } - if t.unit == Empty { - return "" - } - countString := strconv.Itoa(int(t.count)) - switch t.unit { - case Minute: - return countString + "m" - case Hour: - return countString + "h" - case Day: - return countString + "d" - case Week: - return countString + "w" - case Month: - return countString + "M" - case Year: - return countString + "y" - } - return "" -} - -func toStoredByte(readableUnitByte byte) byte { - switch readableUnitByte { - case 'm': - return Minute - case 'h': - return Hour - case 'd': - return Day - case 'w': - return Week - case 'M': - return Month - case 'y': - return Year - } - return 0 -} - -func (t TTL) Minutes() uint32 { - switch t.unit { - case Empty: - return 0 - case Minute: - return uint32(t.count) - case Hour: - return uint32(t.count) * 60 - case Day: - return uint32(t.count) * 60 * 24 - case Week: - return uint32(t.count) * 60 * 24 * 7 - case Month: - return uint32(t.count) * 60 * 24 * 31 - case Year: - return uint32(t.count) * 60 * 24 * 365 - } - return 0 -} |
