public override void Parse(Stream s)
{
base.Parse(s);
this.NotificationFlags = new NotificationFlags();
this.NotificationFlags.Parse(s);
if (this.NotificationFlags.Value.NotificationType == NotificationTypesEnum.TableModified)
{
this.TableEventType = (TableEventTypeEnum)ReadUshort();
}
if (NotificationFlags.Value.NotificationType == NotificationTypesEnum.TableModified && (TableEventType == TableEventTypeEnum.TableRowAdded || TableEventType == TableEventTypeEnum.TableRowDeleted || TableEventType == TableEventTypeEnum.TableRowModified))
{
this.TableRowFolderID = new FolderID();
this.TableRowFolderID.Parse(s);
}
if ((((int)NotificationFlags.Value.NotificationDataAvailability & 0x8000) != 0) && (TableEventType == TableEventTypeEnum.TableRowAdded || TableEventType == TableEventTypeEnum.TableRowDeleted || TableEventType == TableEventTypeEnum.TableRowModified))
{
this.TableRowMessageID = new MessageID();
this.TableRowMessageID.Parse(s);
}
if ((((int)NotificationFlags.Value.NotificationDataAvailability & 0x8000) != 0) && (TableEventType == TableEventTypeEnum.TableRowAdded || TableEventType == TableEventTypeEnum.TableRowDeleted || TableEventType == TableEventTypeEnum.TableRowModified))
{
this.TableRowInstance = ReadUint();
}
if (NotificationFlags.Value.NotificationType == NotificationTypesEnum.TableModified && (TableEventType == TableEventTypeEnum.TableRowAdded || TableEventType == TableEventTypeEnum.TableRowModified))
{
this.InsertAfterTableRowFolderID = new FolderID();
this.InsertAfterTableRowFolderID.Parse(s);
}
if (NotificationFlags.Value.NotificationType == NotificationTypesEnum.TableModified && (((int)NotificationFlags.Value.NotificationDataAvailability & 0x8000) != 0) && (TableEventType == TableEventTypeEnum.TableRowAdded || TableEventType == TableEventTypeEnum.TableRowModified))
{
this.InsertAfterTableRowID = new MessageID();
this.InsertAfterTableRowID.Parse(s);
}
if (NotificationFlags.Value.NotificationType == NotificationTypesEnum.TableModified && (((int)NotificationFlags.Value.NotificationDataAvailability & 0x8000) != 0) && (TableEventType == TableEventTypeEnum.TableRowAdded || TableEventType == TableEventTypeEnum.TableRowModified))
{
this.InsertAfterTableRowInstance = ReadUint();
}
if (NotificationFlags.Value.NotificationType == NotificationTypesEnum.TableModified && (TableEventType == TableEventTypeEnum.TableRowAdded || TableEventType == TableEventTypeEnum.TableRowModified))
{
this.TableRowDataSize = ReadUshort();
}
if (NotificationFlags.Value.NotificationType == NotificationTypesEnum.TableModified && (TableEventType == TableEventTypeEnum.TableRowAdded || TableEventType == TableEventTypeEnum.TableRowModified))
{
if (DecodingContext.SetColumnProTagMap_Handle != null && DecodingContext.SetColumnProTagMap_Handle.ContainsKey(this.NotificationHandle) )
{
propertiesBySetColum = DecodingContext.SetColumnProTagMap_Handle[this.NotificationHandle];
}
else
{
throw new MissingInformationException("Missing PropertyTags information for RopNotifyResponse", (ushort)RopIdType.RopNotify, new uint[] {0,NotificationHandle });
}
this.TableRowData = new PropertyRow(propertiesBySetColum);
this.TableRowData.Parse(s);
}
if (NotificationFlags.Value.NotificationType != NotificationTypesEnum.TableModified && NotificationFlags.Value.NotificationType != NotificationTypesEnum.Extended)
{
this.FolderId = new FolderID();
this.FolderId.Parse(s);
}
if (NotificationFlags.Value.NotificationType != NotificationTypesEnum.TableModified && NotificationFlags.Value.NotificationType != NotificationTypesEnum.Extended && (((int)NotificationFlags.Value.NotificationDataAvailability & 0x8000) != 0))
{
this.MessageId = new MessageID();
this.MessageId.Parse(s);
}
if ((NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectCreated || NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectDeleted || NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectMoved || NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectCopied) && ((((int)NotificationFlags.Value.NotificationDataAvailability) & 0xC000) == 0xC000 || (((int)NotificationFlags.Value.NotificationDataAvailability) & 0xC000) == 0))
{
this.ParentFolderId = new FolderID();
this.ParentFolderId.Parse(s);
}
if (NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectMoved || NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectCopied)
{
this.OldFolderId = new FolderID();
this.OldFolderId.Parse(s);
}
if ((NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectMoved || NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectCopied) && (((int)NotificationFlags.Value.NotificationDataAvailability & 0x8000) != 0))
{
this.OldMessageId = new MessageID();
this.OldMessageId.Parse(s);
}
if ((NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectMoved || NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectCopied) && (((int)NotificationFlags.Value.NotificationDataAvailability & 0x8000) == 0))
{
this.OldParentFolderId = new MessageID();
this.OldParentFolderId.Parse(s);
}
if (NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectCreated || NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectModified)
{
this.TagCount = ReadUshort();
if (TagCount != 0x0000 && TagCount != 0xFFFF)
{
List<PropertyTag> listTags = new List<PropertyTag>();
for (int i = 0; i < this.TagCount; i++)
{
PropertyTag tempTag = new PropertyTag();
tempTag.Parse(s);
listTags.Add(tempTag);
}
this.Tags = listTags.ToArray();
}
}
if (((int)NotificationFlags.Value.NotificationDataAvailability & 0x1000) != 0)
{
this.TotalMessageCount = ReadUint();
}
if (((int)NotificationFlags.Value.NotificationDataAvailability & 0x2000) != 0)
{
this.UnreadMessageCount = ReadUint();
}
if (NotificationFlags.Value.NotificationType == NotificationTypesEnum.NewMail)
{
this.MessageFlags = ReadUint();
this.UnicodeFlag = ReadByte();
this.MessageClass = new MAPIString(Encoding.ASCII);
this.MessageClass.Parse(s);
}
}