Ejemplo n.º 1
0
        private void RewriteEntryList <T>(EntryList <T> entryList, IComparer <T> comparer = null) where T : EntryBase
        {
            if (entryList == null)
            {
                return;
            }

            var length        = entryList.Count * SyncEntry.Size;
            var syncListItems = entryList.ToList();

            if (comparer != null)
            {
                syncListItems.Sort(comparer);
            }
            var syncList = new BinaryContainer(length);


            foreach (var entry in entryList)
            {
                RewriteEntry(entry.Entry, entry.AllBytes);
            }
            var i = 0;

            foreach (var entry in syncListItems)
            {
                var item = ModelFactory.GetModel <SyncEntry>(syncList, i * 16);
                item.EntryId = entry.Entry.Id;
                item.SyncId  = 0; //_syncId++; //?
                i++;
            }

            if (entryList.SyncList != null)
            {
                RewriteEntry(entryList.SyncList.Entry, syncList.ReadAll());
            }
            if (entryList.SyncData != null)
            {
                RewriteEntry(entryList.SyncData.Entry, entryList.SyncData.AllBytes);
            }
        }