public override void Extract() { int sizeOfFixedSizeProperty = PropertyTag.GetSizeOfFixedSizeProperty(base.PropertyTag.Type); if (sizeOfFixedSizeProperty > 0) { byte[] array = base.StreamExtractor.ReadBytes(sizeOfFixedSizeProperty); if (base.PropertyTag.Type == PropertyTag.PropertyType.Boolean) { array = new byte[] { array[0] }; } if (base.PropertyValueProcessor != null) { array = (byte[])base.PropertyValueProcessor(array); } if (array != null) { IProperty property = base.PropertyBag.AddProperty(base.PropertyTag.Value); IPropertyWriter propertyWriter = property.OpenStreamWriter(); propertyWriter.Write(array); propertyWriter.Close(); } } }
protected override IFolder CreateFolder(IPST targetSession, IFolder parentFolder, string folderName) { List <uint> subFolderIds = parentFolder.SubFolderIds; if (subFolderIds != null) { foreach (uint num in subFolderIds) { IFolder folder = targetSession.ReadFolder(num); Dictionary <ushort, IProperty> properties = folder.PropertyBag.Properties; IProperty property = null; if (properties.TryGetValue(PropertyTag.DisplayName.Id, out property)) { IPropertyReader propertyReader = property.OpenStreamReader(); string @string = Encoding.Unicode.GetString(propertyReader.Read()); if (@string == folderName) { return(folder); } propertyReader.Close(); } } } IFolder folder2 = parentFolder.AddFolder(); IProperty property2 = folder2.PropertyBag.AddProperty(PropertyTag.DisplayName.Value); IPropertyWriter propertyWriter = property2.OpenStreamWriter(); propertyWriter.Write(Encoding.Unicode.GetBytes(folderName)); propertyWriter.Close(); folder2.Save(); return(folder2); }
private void AddRecipientDisplayProperty(PropertyTag propertyTag, StringBuilder displayString) { if (displayString.Length > 0) { IProperty property = this.PropertyBag.AddProperty(propertyTag.NormalizedValueForPst); IPropertyWriter propertyWriter = property.OpenStreamWriter(); propertyWriter.Write(Encoding.Unicode.GetBytes(displayString.ToString(0, displayString.Length - 1))); propertyWriter.Close(); } }
public override IMessage AddEmbeddedMessage() { IMessage message = this.attachment.AddMessageAttachment(); IProperty property = this.attachment.PropertyBag.AddProperty(922812429U); IPropertyWriter propertyWriter = property.OpenStreamWriter(); propertyWriter.Write(BitConverter.GetBytes((ulong)message.Id)); propertyWriter.Close(); return(message); }
public override void Extract() { byte[] value = base.StreamExtractor.ReadBytes(4); int size = BitConverter.ToInt32(value, 0); byte[] array = base.StreamExtractor.ReadBytes(size); if (base.PropertyValueProcessor != null) { array = (byte[])base.PropertyValueProcessor(array); } if (array != null) { IProperty property = base.PropertyBag.AddProperty(base.PropertyTag.NormalizedValueForPst); IPropertyWriter propertyWriter = property.OpenStreamWriter(); propertyWriter.Write(FastTransferStreamExtractor.PropertyExtractor.TrimStringEnd(base.PropertyTag.Type, array)); propertyWriter.Close(); } }
public virtual void SetProperty(PropertyValue propertyValue) { if (!this.iPstPropertyBag.IsWritable || PSTPropertyBag.propertiesToSkip.Contains((ushort)propertyValue.PropertyTag.PropertyId)) { this.values[propertyValue.PropertyTag] = propertyValue.Value; return; } IProperty property; if (!this.iPstPropertyBag.Properties.TryGetValue((ushort)propertyValue.PropertyTag.PropertyId, out property)) { property = this.iPstPropertyBag.AddProperty(propertyValue.PropertyTag); } if (property == null) { throw new NullReferenceException("Cannot SetProperty on a null pstProperty"); } if (property.PropTag != propertyValue.PropertyTag) { throw new PropertyTagsDoNotMatchPermanentException(property.PropTag, propertyValue.PropertyTag); } try { if (propertyValue.PropertyTag.IsMultiValuedProperty) { List <List <byte> > list = new List <List <byte> >(((Array)propertyValue.Value).Length); int i = 0; while (i < ((Array)propertyValue.Value).Length) { PropertyType propertyType = propertyValue.PropertyTag.PropertyType; byte[] source; if (propertyType <= PropertyType.MultiValueUnicode) { switch (propertyType) { case PropertyType.MultiValueInt16: source = BitConverter.GetBytes(((short[])propertyValue.Value)[i]); goto IL_27D; case PropertyType.MultiValueInt32: source = BitConverter.GetBytes(((int[])propertyValue.Value)[i]); goto IL_27D; case PropertyType.MultiValueFloat: source = BitConverter.GetBytes(((float[])propertyValue.Value)[i]); goto IL_27D; case PropertyType.MultiValueDouble: case PropertyType.MultiValueAppTime: source = BitConverter.GetBytes(((double[])propertyValue.Value)[i]); goto IL_27D; case PropertyType.MultiValueCurrency: break; default: if (propertyType != PropertyType.MultiValueInt64) { switch (propertyType) { case PropertyType.MultiValueString8: source = Encoding.ASCII.GetBytes(((string[])propertyValue.Value)[i]); goto IL_27D; case PropertyType.MultiValueUnicode: source = Encoding.Unicode.GetBytes(((string[])propertyValue.Value)[i]); goto IL_27D; default: goto IL_289; } } break; } source = BitConverter.GetBytes(((long[])propertyValue.Value)[i]); goto IL_27D; } if (propertyType == PropertyType.MultiValueSysTime) { long value; try { value = ((ExDateTime[])propertyValue.Value)[i].ToFileTimeUtc(); } catch (ArgumentOutOfRangeException) { value = 0L; } source = BitConverter.GetBytes(value); goto IL_27D; } if (propertyType == PropertyType.MultiValueGuid) { source = ((Guid[])propertyValue.Value)[i].ToByteArray(); goto IL_27D; } if (propertyType == PropertyType.MultiValueBinary) { source = ((byte[][])propertyValue.Value)[i]; goto IL_27D; } IL_289: i++; continue; IL_27D: list.Add(source.ToList <byte>()); goto IL_289; } property.WriteMultiValueData(list); } else { IPropertyWriter propertyWriter = property.OpenStreamWriter(); PropertyType propertyType2 = propertyValue.PropertyTag.PropertyType; if (propertyType2 <= PropertyType.Unicode) { switch (propertyType2) { case PropertyType.Int16: propertyWriter.Write(BitConverter.GetBytes((short)propertyValue.Value)); goto IL_4B4; case PropertyType.Int32: propertyWriter.Write(BitConverter.GetBytes((int)propertyValue.Value)); goto IL_4B4; case PropertyType.Float: propertyWriter.Write(BitConverter.GetBytes((float)propertyValue.Value)); goto IL_4B4; case PropertyType.Double: case PropertyType.AppTime: propertyWriter.Write(BitConverter.GetBytes((double)propertyValue.Value)); goto IL_4B4; case PropertyType.Currency: break; case (PropertyType)8: case (PropertyType)9: case PropertyType.Error: case (PropertyType)12: goto IL_4B2; case PropertyType.Bool: propertyWriter.Write(BitConverter.GetBytes((bool)propertyValue.Value)); goto IL_4B4; case PropertyType.Object: goto IL_49D; default: if (propertyType2 != PropertyType.Int64) { switch (propertyType2) { case PropertyType.String8: propertyWriter.Write(Encoding.ASCII.GetBytes((string)propertyValue.Value)); goto IL_4B4; case PropertyType.Unicode: propertyWriter.Write(Encoding.Unicode.GetBytes((string)propertyValue.Value)); goto IL_4B4; default: goto IL_4B2; } } break; } propertyWriter.Write(BitConverter.GetBytes((long)propertyValue.Value)); goto IL_4B4; } if (propertyType2 <= PropertyType.Guid) { if (propertyType2 == PropertyType.SysTime) { long value2; try { value2 = ((ExDateTime)propertyValue.Value).ToFileTimeUtc(); } catch (ArgumentOutOfRangeException) { value2 = 0L; } propertyWriter.Write(BitConverter.GetBytes(value2)); goto IL_4B4; } if (propertyType2 != PropertyType.Guid) { goto IL_4B2; } propertyWriter.Write(((Guid)propertyValue.Value).ToByteArray()); goto IL_4B4; } else if (propertyType2 != PropertyType.ServerId && propertyType2 != PropertyType.Binary) { goto IL_4B2; } IL_49D: propertyWriter.Write((byte[])propertyValue.Value); goto IL_4B4; IL_4B2: return; IL_4B4: propertyWriter.Close(); } } catch (PSTExceptionBase innerException) { throw new MailboxReplicationPermanentException(new LocalizedString(((PSTSession)this.session).PstMailbox.IPst.FileName), innerException); } }