public static unsafe int Write(this IColumnStream stream, DateTime[] chunk) { var ticks = chunk.Select(p => p.Ticks).ToArray(); fixed(long *p = ticks) return(stream.Write((byte *)p, chunk.Length * sizeof(long))); }
private static void ReadWf(IColumnStream stream, UnsafeBuffer rData, byte wVal, int wLen) { // Clean rData.SetAll(0); stream.Reset(); // 1.1 Read more than wrote var read = stream.Read(rData.Ptr, wLen * 2); read.Check(wLen); rData.AllUntil(wLen - 1, wVal); rData.AllFrom(wLen, 0); // Clean rData.SetAll(0); stream.Reset(); // 1.2 Read less than wrote and until after end var split = 7; var splitLen = wLen / split; for (var i = 0; i < split; i++) { read = stream.Read(rData.Ptr + (splitLen * i), splitLen); read.Check(splitLen); rData.AllUntil(splitLen * i - 1, wVal); rData.AllFrom(splitLen * (i + 1), 0); } var remaining = wLen - splitLen * split; read = stream.Read(rData.Ptr + splitLen * split, splitLen); read.Check(remaining); rData.AllUntil(wLen - 1, wVal); rData.AllFrom(wLen, 0); // Clean rData.SetAll(0); stream.Reset(); // 1.3 Read exactly the neumber of byte wrote read = stream.Read(rData.Ptr, wLen); read.Check(wLen); rData.AllUntil(wLen - 1, wVal); rData.AllFrom(wLen, 0); read = stream.Read(rData.Ptr + wLen, wLen); read.Check(0); rData.AllUntil(wLen - 1, wVal); rData.AllFrom(wLen, 0); // Clean rData.SetAll(0); stream.Reset(); }
public static unsafe int Write(this IColumnStream stream, Int32Entry[] chunk) { fixed(Int32Entry *p = chunk) return(stream.Write((byte *)p, chunk.Length * sizeof(Int32Entry))); }