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));
        }