(t time.Time)
| 259 | } |
| 260 | |
| 261 | func (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 | |
| 294 | func (e *msgpackEncDriver) EncodeExt(v interface{}, basetype reflect.Type, xtag uint64, ext Ext) { |
| 295 | var bs0, bs []byte |
nothing calls this directly
no test coverage detected