예제 #1
0
        public void SaveData()
        {
            if (!Directory.Exists(_dataDir))
            {
                Directory.CreateDirectory(_dataDir);
            }

            //Purge dirty list.
            var dirtyLogbooks = _dirtyLogbooks.ToList();

            _dirtyLogbooks.Clear();

            //Write master table.
            try {
                using (Stream output = File.Open(Path.Combine(_dataDir, MasterTableFilename(MemberId)), FileMode.Create, FileAccess.Write, FileShare.None)) {
                    output.Write(_masterHeader, 0, _masterHeader.Length);
                    using (DSWriter wr = new DSWriter(output, true)) {
                        GetSerializationInfo(null).Serialize(wr);
                    }
                }
            } catch (IOException) { }

            //Write logbooks.
            foreach (var book in dirtyLogbooks)
            {
                try {
                    using (Stream output = File.Open(Path.Combine(_dataDir, LogbookFilename(book.MemberId, book.SequenceId)), FileMode.Create, FileAccess.Write, FileShare.None)) {
                        output.Write(_logHeader, 0, _logHeader.Length);
                        using (DSWriter wr = new DSWriter(output, true)) {
                            book.GetSerializationInfo(null).Serialize(wr);
                        }
                    }
                } catch (IOException) { }
            }
        }
예제 #2
0
 public override void SerializeNonNull(DSWriter output)
 {
     output.Write(Type);
     output.Write7bUInt((uint)data.Count);
     foreach (var value in data)
     {
         value.Serialize(output);
     }
 }
예제 #3
0
 public override void SerializeNonNull(DSWriter output)
 {
     output.Write(Type);
     output.Write7bUInt((uint)fields.Count);
     foreach (var flist in fields)
     {
         output.Write7bUInt(flist.Key);
         flist.Value.Serialize(output);
     }
 }
예제 #4
0
 public static void Serialize(this StoragePremitive p, DSWriter w)
 {
     if (p == null)
     {
         w.Write(EnumerablesEx.AsEnumerable(TypeIdentifier.Null));
     }
     else
     {
         p.SerializeNonNull(w);
     }
 }
예제 #5
0
 public override void SerializeNonNull(DSWriter output)
 {
     output.Write(Type);
     output.Write(value);
 }
예제 #6
0
 public override void SerializeNonNull(DSWriter output)
 {
     output.Write(Type);
     output.Write7bUInt((uint)data.Length);
     output.Write(data);
 }
예제 #7
0
 public virtual void SerializeNonNull(DSWriter output)
 {
     throw new NotImplementedException();
 }