public static void Deserialize(IActivityLog activityLog, byte[] serializedActivityLog) { Util.ThrowOnNullArgument(serializedActivityLog, "serializedActivityLog"); if (serializedActivityLog.Length == 0) { return; } using (MemoryStream memoryStream = new MemoryStream(serializedActivityLog, true)) { using (BinaryReader binaryReader = new BinaryReader(memoryStream)) { binaryReader.ReadInt32(); binaryReader.ReadInt32(); binaryReader.ReadInt64(); List <ActivityLogSerializer.SerializedPropertyInfo> propertyInfos = ActivityLogSerializer.DeserializeActivitySchema(binaryReader); int num = binaryReader.ReadInt32(); List <Activity> list = new List <Activity>(num); for (int i = 0; i < num; i++) { Activity item = ActivityLogSerializer.DeserializeActivity(binaryReader, propertyInfos); list.Add(item); } activityLog.Reset(); activityLog.Append(list); } } }
public static byte[] Serialize(IActivityLog activityLog) { List <Activity> list = activityLog.Query().Reverse <Activity>().ToList <Activity>(); if (list.Count == 0) { return(Array <byte> .Empty); } byte[] array; using (MemoryStream memoryStream = new MemoryStream(list.Count * 128)) { using (BinaryWriter binaryWriter = new BinaryWriter(memoryStream)) { binaryWriter.Write(1); binaryWriter.Write(1); binaryWriter.Write(0L); List <ActivityLogSerializer.PropertySerializer> propertySerializers = ActivityLogSerializer.SerializeActivitySchema(binaryWriter); binaryWriter.Write(list.Count); foreach (Activity activity in list) { ActivityLogSerializer.SerializeActivity(binaryWriter, activity, propertySerializers); if (memoryStream.Length > 10485760L) { throw new NotSupportedException(string.Format("Serialization of activity logs longer than {0} is not supported", 10485760)); } } array = new byte[memoryStream.Length]; Array.Copy(memoryStream.GetBuffer(), array, memoryStream.Length); } } return(array); }
public static void Deserialize(StoreSession storeSession, byte[] serializedActivityLog) { MailboxSession mailboxSession = storeSession as MailboxSession; if (mailboxSession != null) { IActivityLog activityLog = ActivityLogFactory.Current.Bind(mailboxSession); ActivityLogSerializer.Deserialize(activityLog, serializedActivityLog); } }
public static byte[] Serialize(StoreSession storeSession) { MailboxSession mailboxSession = storeSession as MailboxSession; if (mailboxSession != null) { IActivityLog activityLog = ActivityLogFactory.Current.Bind(mailboxSession); return(ActivityLogSerializer.Serialize(activityLog)); } return(Array <byte> .Empty); }
private static Activity DeserializeActivity(BinaryReader reader, List <ActivityLogSerializer.SerializedPropertyInfo> propertyInfos) { MemoryPropertyBag memoryPropertyBag = new MemoryPropertyBag(); foreach (ActivityLogSerializer.SerializedPropertyInfo serializedPropertyInfo in propertyInfos) { bool flag = reader.ReadBoolean(); if (flag) { object value = serializedPropertyInfo.PropertyDeserializer(reader); if (serializedPropertyInfo.PropertyDefinition != null) { value = ActivityLogSerializer.ConvertPropertyValue(serializedPropertyInfo.PropertyDefinition, value); memoryPropertyBag.SetProperty(serializedPropertyInfo.PropertyDefinition, value); } } } return(new Activity(memoryPropertyBag)); }