public string SaveToJson(TemplateTable <TKey, TValue> table)
        {
            var writer = new StringWriter();

            SaveTo(table, writer);
            return(writer.ToString());
        }
 public TemplateTableJsonPatchLoader(TemplateTable <TKey, TValue> referenceTable,
                                     JArray patchJson, JsonSerializer serializer, bool delayedLoad)
 {
     _referenceTable = referenceTable;
     _patchJson      = patchJson;
     _serializer     = serializer;
     _delayedLoad    = delayedLoad;
 }
 public TemplateTableJsonPatchLoader(TemplateTable <TKey, TValue> referenceTable,
                                     string patchJson, bool delayedLoad)
 {
     _referenceTable = referenceTable;
     _patchJson      = JArray.Parse(patchJson);
     _serializer     = new JsonSerializer();
     _delayedLoad    = delayedLoad;
 }
Esempio n. 4
0
 public TemplateTableBsonPackPatchLoader(TemplateTable <TKey, TValue> referenceTable,
                                         Stream stream, JsonSerializer serializer, bool delayedLoad)
 {
     _referenceTable = referenceTable;
     _stream         = stream;
     _serializer     = serializer;
     _delayedLoad    = delayedLoad;
 }
        public void SaveTo(TemplateTable <TKey, TValue> table, TextWriter writer)
        {
            var items = table.ToList();

            items.Sort((x, y) => x.Key.CompareTo(y.Key));
            var values = items.Select(i => i.Value);

            _serializer.Serialize(writer, values);
        }
        public void SaveTo(TemplateTable <TKey, TValue> table, Stream stream)
        {
            var itemList = table.Select(i =>
            {
                JToken token;
                using (var writer = new JTokenWriter())
                {
                    _serializer.Serialize(writer, i.Value);
                    token = writer.Token;
                }
                return(new KeyValuePair <TKey, JToken>(i.Key, token));
            });

            TemplateTableBsonPackIO <TKey> .Save(itemList, stream);
        }
        public void SaveTo(TemplateTable <TKey, TValue> table, Stream stream)
        {
            var items = table.ToList();

            items.Sort((x, y) => x.Key.CompareTo(y.Key));

            // signature 'TPP1' (4 bytes)

            stream.Write(new byte[] { 0x54, 0x50, 0x50, 0x31 }, 0, 4);

            // count (4 bytes)

            var countBuf = BitConverter.GetBytes(items.Count);

            stream.Write(countBuf, 0, countBuf.Length);

            // keys & values

            var keysStream       = new MemoryStream();
            var keysStreamWriter = new BinaryWriter(keysStream);
            var valuesStream     = new MemoryStream();

            foreach (var i in items)
            {
                // serialize value by BsonWriter

                var curPos = valuesStream.Position;
                _typeModel.Serialize(valuesStream, i.Value);
                var valueLength = (int)(valuesStream.Position - curPos);

                // serialize key and the length of value stream

                StreamGenericHelper.Write(keysStreamWriter, i.Key);
                keysStreamWriter.Write(valueLength);
            }

            var keysBuf = keysStream.ToArray();

            stream.Write(BitConverter.GetBytes(keysBuf.Length), 0, 4);
            stream.Write(keysBuf, 0, keysBuf.Length);

            var valuesBuf = valuesStream.ToArray();

            stream.Write(valuesBuf, 0, valuesBuf.Length);
        }