packTimestamp method
Implementation
void packTimestamp(DateTime? v) {
if (v == null) {
packNull();
return;
}
var ms = v.millisecondsSinceEpoch;
var s = (ms / 1000).floor();
var ns = (ms % 1000) * 1000000;
if ((s >> 34) == 0) {
int data64 = (ns << 34) | s;
if (data64 & 0xffffffff00000000 == 0) {
// timestamp 32
_d.setUint8(_offset++, 0xd6);
_d.setInt8(_offset++, -1);
_d.setUint32(_offset, data64);
} else {
// timestamp 64
_d.setUint8(_offset++, 0xd7);
_d.setInt8(_offset++, -1);
_d.setUint64(_offset, data64);
}
} else {
// timestamp 96
_d.setUint8(_offset++, 0xc7);
_d.setUint8(_offset++, 12);
_d.setInt8(_offset++, -1);
_d.setUint32(_offset, ns);
_d.setInt64(_offset, s);
}
}