Exemplo n.º 1
0
            public static string EncodeList(IEnumerable <Covered> data)
            {
                if (data == null)
                {
                    return(null);
                }

                var ret = new LinkedList <IEnumerable <byte> >();

                foreach (var c in data)
                {
                    var asBytes = c.Encode();
                    var length  = System.Linq.Enumerable.Count(asBytes);
                    if (length > ushort.MaxValue)
                    {
                        throw new Exception("Giant coverage array, what");
                    }

                    var len1 = (byte)((length >> 8) & 0xFF);
                    var len2 = (byte)((length >> 0) & 0xFF);

                    ret.AddLast(new[] { len1, len2 });
                    ret.AddLast(asBytes);
                }

                byte[] compressed;
                using (var mem = new MemoryStream())
                {
                    using (var gzip = new System.IO.Compression.GZipStream(mem, System.IO.Compression.CompressionLevel.Optimal))
                    {
                        foreach (var bytes in ret)
                        {
                            foreach (var @byte in bytes)
                            {
                                gzip.WriteByte(@byte);
                            }
                        }
                    }

                    compressed = mem.ToArray();
                }

                return(Convert.ToBase64String(compressed));
            }