MCPcopy Index your code
hub / github.com/ugorji/go / EncodeTime

Method EncodeTime

codec/msgpack.go:261–292  ·  view source on GitHub ↗
(t time.Time)

Source from the content-addressed store, hash-verified

259}
260
261func (e *msgpackEncDriver) EncodeTime(t time.Time) {
262 if t.IsZero() {
263 e.EncodeNil()
264 return
265 }
266 t = t.UTC()
267 sec, nsec := t.Unix(), uint64(t.Nanosecond())
268 var data64 uint64
269 var l = 4
270 if sec >= 0 && sec>>34 == 0 {
271 data64 = (nsec << 34) | uint64(sec)
272 if data64&0xffffffff00000000 != 0 {
273 l = 8
274 }
275 } else {
276 l = 12
277 }
278 if e.h.WriteExt {
279 e.encodeExtPreamble(mpTimeExtTagU, l)
280 } else {
281 e.writeContainerLen(msgpackContainerRawLegacy, l)
282 }
283 switch l {
284 case 4:
285 bigen.writeUint32(e.e.w(), uint32(data64))
286 case 8:
287 bigen.writeUint64(e.e.w(), data64)
288 case 12:
289 bigen.writeUint32(e.e.w(), uint32(nsec))
290 bigen.writeUint64(e.e.w(), uint64(sec))
291 }
292}
293
294func (e *msgpackEncDriver) EncodeExt(v interface{}, basetype reflect.Type, xtag uint64, ext Ext) {
295 var bs0, bs []byte

Callers

nothing calls this directly

Calls 7

EncodeNilMethod · 0.95
encodeExtPreambleMethod · 0.95
writeContainerLenMethod · 0.95
IsZeroMethod · 0.80
writeUint32Method · 0.80
wMethod · 0.80
writeUint64Method · 0.80

Tested by

no test coverage detected