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); }
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(); } } }
public void Write(TextWriter writer, Type type) { WriteTypeKind(writer, type); writer.Write(" \""); _typeNameWriter.Write(writer, type); writer.Write("\" as "); _escapedTypeNameWriter.Write(writer, type); writer.WriteLine(" {"); WriteMembers( writer, () => _queryType.GetFields(type), i => _fieldWriter.Write(writer, i)); WriteMembers( writer, () => _queryType.GetProperties(type), i => _propertyWriter.Write(writer, i)); WriteMembers( writer, () => _queryType.GetMethods(type), i => _methodWriter.Write(writer, i)); WriteMembers( writer, () => _queryType.GetEvents(type), i => _eventWriter.Write(writer, i)); writer.WriteLine("}"); }
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 void Write(TextWriter writer, Type type, IQueryType queryType) { WriteTypeKind(writer, type); writer.Write(' '); _typeNameWriter.Write(writer, type); if (type.BaseType != null) { writer.Write(" : "); _typeNameWriter.Write(writer, type.BaseType); } var implementedInterfaces = queryType.GetInterfaces(type).ToArray(); if (implementedInterfaces.Length > 0) { writer.Write(" implements "); writer.Write(string.Join(',', implementedInterfaces.Select(_typeNameConverter.ToString))); } writer.WriteLine(" {"); WriteMembers("Fields", writer, () => queryType.GetFields(type), i => _fieldWriter.Write(writer, i)); WriteMembers("Properties", writer, () => queryType.GetProperties(type), i => _propertyWriter.Write(writer, i)); WriteMembers("Methods", writer, () => queryType.GetMethods(type), i => _methodWriter.Write(writer, i)); WriteMembers("Events", writer, () => queryType.GetEvents(type), i => _eventWriter.Write(writer, i)); writer.WriteLine("}"); }
/// <inheritdoc /> void IValueSerializer <byte[]> .Write(IPropertyWriter writer, IPropertyDescriptor descriptor, byte[] value) => writer.Write(descriptor, value);
/// <inheritdoc /> void IValueSerializer <string> .Write(IPropertyWriter writer, IPropertyDescriptor descriptor, string value) => writer.Write(descriptor, value);
/// <inheritdoc /> void IValueSerializer <double> .Write(IPropertyWriter writer, IPropertyDescriptor descriptor, double value) => writer.Write(descriptor, value);
/// <inheritdoc /> void IValueSerializer <int> .Write(IPropertyWriter writer, IPropertyDescriptor descriptor, int value) => writer.Write(descriptor, value);
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); } }