...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 package types
30
31 import (
32 "time"
33 )
34
35 func NewPopulatedTimestamp(r interface {
36 Int63() int64
37 }, easy bool) *Timestamp {
38 this := &Timestamp{}
39 ns := int64(r.Int63())
40 this.Seconds = ns / 1e9
41 this.Nanos = int32(ns % 1e9)
42 return this
43 }
44
45 func (ts *Timestamp) String() string {
46 return TimestampString(ts)
47 }
48
49 func NewPopulatedStdTime(r interface {
50 Int63() int64
51 }, easy bool) *time.Time {
52 timestamp := NewPopulatedTimestamp(r, easy)
53 t, err := TimestampFromProto(timestamp)
54 if err != nil {
55 return nil
56 }
57 return &t
58 }
59
60 func SizeOfStdTime(t time.Time) int {
61 ts, err := TimestampProto(t)
62 if err != nil {
63 return 0
64 }
65 return ts.Size()
66 }
67
68 func StdTimeMarshal(t time.Time) ([]byte, error) {
69 size := SizeOfStdTime(t)
70 buf := make([]byte, size)
71 _, err := StdTimeMarshalTo(t, buf)
72 return buf, err
73 }
74
75 func StdTimeMarshalTo(t time.Time, data []byte) (int, error) {
76 ts, err := TimestampProto(t)
77 if err != nil {
78 return 0, err
79 }
80 return ts.MarshalTo(data)
81 }
82
83 func StdTimeUnmarshal(t *time.Time, data []byte) error {
84 ts := &Timestamp{}
85 if err := ts.Unmarshal(data); err != nil {
86 return err
87 }
88 tt, err := TimestampFromProto(ts)
89 if err != nil {
90 return err
91 }
92 *t = tt
93 return nil
94 }
95
View as plain text