package binary
|
|
|
|
import (
|
|
"io"
|
|
"time"
|
|
)
|
|
|
|
type Time struct {
|
|
time.Time
|
|
}
|
|
|
|
func (self Time) Equals(other Binary) bool {
|
|
if o, ok := other.(Time); ok {
|
|
return self.Equal(o.Time)
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
|
|
func (self Time) Less(other Binary) bool {
|
|
if o, ok := other.(Time); ok {
|
|
return self.Before(o.Time)
|
|
} else {
|
|
panic("Cannot compare unequal types")
|
|
}
|
|
}
|
|
|
|
func (self Time) ByteSize() int {
|
|
return 8
|
|
}
|
|
|
|
func (self Time) WriteTo(w io.Writer) (int64, error) {
|
|
return Int64(self.Unix()).WriteTo(w)
|
|
}
|
|
|
|
func ReadTimeSafe(r io.Reader) (Time, int64, error) {
|
|
t, n, err := ReadInt64Safe(r)
|
|
if err != nil {
|
|
return Time{}, n, err
|
|
}
|
|
return Time{time.Unix(int64(t), 0)}, n, nil
|
|
}
|
|
|
|
func ReadTimeN(r io.Reader) (Time, int64) {
|
|
t, n, err := ReadTimeSafe(r)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return t, n
|
|
}
|
|
|
|
func ReadTime(r io.Reader) Time {
|
|
t, _, err := ReadTimeSafe(r)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return t
|
|
}
|