private static List <ActivityLogSerializer.PropertySerializer> SerializeActivitySchema(BinaryWriter writer) { writer.Write(ActivitySchema.PropertyCollection.Count); List <ActivityLogSerializer.PropertySerializer> list = new List <ActivityLogSerializer.PropertySerializer>(ActivitySchema.PropertyCollection.Count); foreach (PropertyDefinition propertyDefinition in ActivitySchema.PropertyCollection) { writer.Write(propertyDefinition.Name); if (propertyDefinition.Type == typeof(int)) { writer.Write(7); list.Add(delegate(BinaryWriter binaryWriter, object propertyValue) { int value = (int)propertyValue; binaryWriter.Write(value); }); } else if (propertyDefinition.Type == typeof(bool)) { writer.Write(5); list.Add(delegate(BinaryWriter binaryWriter, object propertyValue) { bool value = (bool)propertyValue; binaryWriter.Write(value); }); } else if (propertyDefinition.Type == typeof(string)) { writer.Write(0); list.Add(delegate(BinaryWriter binaryWriter, object propertyValue) { string value = (string)propertyValue; binaryWriter.Write(value); }); } else if (propertyDefinition.Type == typeof(byte[])) { writer.Write(4); list.Add(delegate(BinaryWriter binaryWriter, object propertyValue) { byte[] array = (byte[])propertyValue; binaryWriter.Write(array.Length); binaryWriter.Write(array); }); } else if (propertyDefinition.Type == typeof(Guid)) { writer.Write(0); list.Add(delegate(BinaryWriter binaryWriter, object propertyValue) { string value = ((Guid)propertyValue).ToString(); binaryWriter.Write(value); }); } else if (propertyDefinition.Type == typeof(ExDateTime)) { writer.Write(8); list.Add(delegate(BinaryWriter binaryWriter, object propertyValue) { long value = ((ExDateTime)propertyValue).ToFileTimeUtc(); binaryWriter.Write(value); }); } else { if (!(propertyDefinition.Type == typeof(StoreObjectId))) { throw new NotSupportedException(string.Format("Serialization of property {0} of type {1} is not supported", propertyDefinition.Name, propertyDefinition.Type.FullName)); } writer.Write(4); list.Add(delegate(BinaryWriter binaryWriter, object propertyValue) { StoreObjectId storeObjectId = (StoreObjectId)propertyValue; byte[] bytes = storeObjectId.GetBytes(); binaryWriter.Write(bytes.Length); binaryWriter.Write(bytes); }); } } return(list); }
private static ReplyTemplate FindByTemplateGuid(MailboxSession session, RuleAction.OOFReply ruleAction) { MessageItem messageItem = null; try { using (Folder folder = Folder.Bind(session, DefaultFolderType.Inbox)) { byte[] replyTemplateEntryIdFromTemplateGuid = ReplyTemplate.GetReplyTemplateEntryIdFromTemplateGuid(folder, ruleAction.ReplyTemplateGuid); if (replyTemplateEntryIdFromTemplateGuid != null) { StoreObjectId storeObjectId = StoreObjectId.FromProviderSpecificId(replyTemplateEntryIdFromTemplateGuid); messageItem = MessageItem.Bind(session, storeObjectId, new PropertyDefinition[] { ItemSchema.ReplyTemplateId }); messageItem.OpenAsReadWrite(); ReplyTemplate.Tracer.TraceDebug <IExchangePrincipal, Guid, byte[]>(0L, "Mailbox:{0}: Found reply template by GUID. GUID={1}, Entry Id={2}", session.MailboxOwner, ruleAction.ReplyTemplateGuid, storeObjectId.GetBytes()); } else { ReplyTemplate.Tracer.TraceDebug <IExchangePrincipal, Guid>(0L, "Mailbox:{0}: Found no reply template by GUID. GUID={1}", session.MailboxOwner, ruleAction.ReplyTemplateGuid); messageItem = null; } } } catch (ObjectNotFoundException) { return(null); } if (messageItem != null) { return(new ReplyTemplate(messageItem)); } return(null); }