MalwareSourceCode/MSIL/Virus/Win32/E/Virus.Win32.Expiro.w-69bb73081eac86b8cf86f45e33515d0095855636967076e2b593d7a30cd80a07/Microsoft/InfoCards/LedgerEntryCollection.cs

66 lines
2.4 KiB
C#
Raw Normal View History

2022-08-18 11:28:56 +00:00
// Decompiled with JetBrains decompiler
// Type: Microsoft.InfoCards.LedgerEntryCollection
// Assembly: infocard, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// MVID: 516D8B44-4448-4D2C-8B8E-FFBB3FFE472B
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Virus.Win32.Expiro.w-69bb73081eac86b8cf86f45e33515d0095855636967076e2b593d7a30cd80a07.exe
using Microsoft.InfoCards.Diagnostics;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace Microsoft.InfoCards
{
internal class LedgerEntryCollection : Dictionary<string, LedgerEntry>
{
private Uri m_infoCardId;
private LedgerEntryCollection()
{
}
public void Add(LedgerEntry entry) => this[entry.Recipient.RecipientId] = entry;
public LedgerEntryCollection(Uri infoCardId) => this.m_infoCardId = infoCardId;
public void Get(StoreConnection con)
{
InfoCardTrace.Assert((Uri) null != this.m_infoCardId, "The infocard id must be specified prior to executing this operation");
ICollection<DataRow> dataRows = con.Query(QueryDetails.FullRow, new QueryParameter("ix_objecttype", new object[1]
{
(object) -1
}), new QueryParameter("ix_parentid", new object[1]
{
(object) GlobalId.DeriveFrom(this.m_infoCardId.ToString())
}));
if (dataRows == null || dataRows.Count <= 0)
return;
foreach (DataRow dataRow in (List<DataRow>) dataRows)
{
LedgerEntry ledgerEntry = new LedgerEntry((Stream) new MemoryStream(dataRow.GetDataField()), con);
this[ledgerEntry.Recipient.RecipientId] = ledgerEntry;
}
}
public void Serialize(Stream stream)
{
BinaryWriter writer = new BinaryWriter(stream, Encoding.Unicode);
writer.Write(this.Count);
foreach (KeyValuePair<string, LedgerEntry> keyValuePair in (Dictionary<string, LedgerEntry>) this)
keyValuePair.Value.Serialize(writer);
}
public void Save(StoreConnection con)
{
InfoCardTrace.Assert((Uri) null != this.m_infoCardId, "The infocard id must be specified prior to executing this operation");
foreach (KeyValuePair<string, LedgerEntry> keyValuePair in (Dictionary<string, LedgerEntry>) this)
{
LedgerEntry ledgerEntry = keyValuePair.Value;
if (ledgerEntry.IsDirty)
ledgerEntry.Save(con);
}
}
}
}