public byte[] FinalizeAndGetBinaryData() { BinaryWriter binaryWriter = BinaryWriterFactory.GetBinaryWriter(); binaryWriter.WriteInt(this._folderCount); for (int index = 0; index < this._folderCount; ++index) { SaveEntryFolder folder = this._folders[index]; int parentGlobalId = folder.ParentGlobalId; int globalId = folder.GlobalId; int localId = folder.FolderId.LocalId; SaveFolderExtension extension = folder.FolderId.Extension; binaryWriter.Write3ByteInt(parentGlobalId); binaryWriter.Write3ByteInt(globalId); binaryWriter.Write3ByteInt(localId); binaryWriter.WriteByte((byte)extension); } binaryWriter.WriteInt(this._entryCount); binaryWriter.AppendData(this._writer); byte[] data = binaryWriter.Data; BinaryWriterFactory.ReleaseBinaryWriter(binaryWriter); BinaryWriterFactory.ReleaseBinaryWriter(this._writer); this._writer = (BinaryWriter)null; return(data); }
public void SerializeFolder(SaveEntryFolder folder) { foreach (SaveEntry allEntry in folder.AllEntries) { this.SerializeEntry(allEntry); } }
public SaveEntryFolder( SaveEntryFolder parent, int globalId, FolderId folderId, int entryCount) : this(parent.GlobalId, globalId, folderId, entryCount) { }
public SaveEntryFolder CreateFolder( SaveEntryFolder parentFolder, FolderId folderId, int entryCount) { int globalId = Interlocked.Increment(ref this._folderCount) - 1; SaveEntryFolder saveEntryFolder = new SaveEntryFolder(parentFolder, globalId, folderId, entryCount); parentFolder.AddChildFolderEntry(saveEntryFolder); this._folders.Add(saveEntryFolder); return(saveEntryFolder); }
public SaveEntryFolder CreateFolder( SaveEntryFolder parentFolder, FolderId folderId, int entryCount) { int folderCount = this._folderCount; ++this._folderCount; SaveEntryFolder saveEntryFolder = new SaveEntryFolder(parentFolder, folderCount, folderId, entryCount); parentFolder.AddChildFolderEntry(saveEntryFolder); this._folders.Add(saveEntryFolder); return(saveEntryFolder); }
public void SerializeFolderConcurrent(SaveEntryFolder folder) { int managedThreadId = Thread.CurrentThread.ManagedThreadId; BinaryWriter writer; lock (this._locker) { if (!this._writers.TryGetValue(managedThreadId, out writer)) { writer = new BinaryWriter(262144); this._writers.Add(managedThreadId, writer); } } foreach (SaveEntry allEntry in folder.AllEntries) { this.SerializeEntryConcurrent(allEntry, writer); } }
public static SaveEntry CreateNew(SaveEntryFolder parentFolder, EntryId entryId) => new SaveEntry() { Id = entryId, FolderId = parentFolder.GlobalId };
public void AddChildFolderEntry(SaveEntryFolder saveEntryFolder) => this._saveEntryFolders.Add(saveEntryFolder.FolderId, saveEntryFolder);