protected override void AddItem(FullDataItem <T> item) { var meta = this.GetFileMetaData(item.Item.FileIndex); item.Item.TemplateId = this.AddTemplate(item.Template); if (!meta.BaseTime.HasValue) { meta.BaseTime = item.Item.Time; } item.Item.ProcessId = meta.ProcessIds.Put(item.Item.ProcessId); item.Item.ThreadId = meta.ThreadIds.Put(item.Item.ThreadId); item.Item.ActivityIdIndex = meta.ActivityIds.Put(item.ActivityId); if (this.Properties.CompressEnabled) { if (!item.Item.Compress(meta.BaseTime.Value, out CompressedDataItem8 compressed)) { if (item.Item.Compress(meta.BaseTime.Value, out CompressedDataItem16 compressed16)) { compressed16.State = CompressState.Compressed16; this.CompressedItems16.Add(compressed16); compressed.State = CompressState.Compressed16; compressed.Index = this.CompressedItems16.Count - 1; } else { // item.Item.Id is changed in this call. this.AddItem(item); compressed.State = CompressState.NotCompressed; compressed.Index = this.InternalItems.Count - 1; } } this.CompressedItems8.Add(compressed); var index = this.CompressedItems8.Count - 1; this.AddParameters(item.Item.Parameters); item.Item.Id = index; Debug.Assert(index == this.Parameters.Count - 1, "compressed item list doesn't match parameters list"); } else { base.AddItem(item); } }
protected virtual void AddItem(FullDataItem <T> item) { this.localHashTableStringPool.Intern(item.Item.Parameters); this.internalItems.Add(item.Item); item.Item.Id = this.InternalItems.Count - 1; }