Exemplo n.º 1
0
        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)));
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
 public static unsafe int Write(this IColumnStream stream, Int32Entry[] chunk)
 {
     fixed(Int32Entry *p = chunk)
     return(stream.Write((byte *)p, chunk.Length * sizeof(Int32Entry)));
 }