package utils

import (
	"sync/atomic"
	"time"
)

type AtomicTime struct {
	v atomic.Value
}

func NewAtomicTime(t time.Time) *AtomicTime {
	a := &AtomicTime{}
	a.Set(t)
	return a
}

func (t *AtomicTime) Set(new time.Time) {
	t.v.Store(new)
}

func (t *AtomicTime) Get() time.Time {
	return t.v.Load().(time.Time)
}