private static void WriteString8Array(MsgSubStorageWriter writer, TnefPropertyTag propertyTag, object value)
 {
     string[] array = value as string[];
     if (array == null)
     {
         throw new InvalidOperationException(MsgStorageStrings.InvalidValueType(typeof(string[]), value.GetType()));
     }
     MsgStorageRulesTable.InternalWriteStringArray(writer, propertyTag.ToUnicode(), array);
 }
        private static void WriteDouble(MsgSubStorageWriter writer, TnefPropertyTag propertyTag, object value)
        {
            double?num = value as double?;

            if (num == null)
            {
                throw new InvalidOperationException(MsgStorageStrings.InvalidValueType(typeof(double), value.GetType()));
            }
            MsgStoragePropertyData.WriteProperty(writer.PropertiesWriter, propertyTag, num.Value);
        }
        private static void WriteString8(MsgSubStorageWriter writer, TnefPropertyTag propertyTag, object value)
        {
            string text = value as string;

            if (text == null)
            {
                throw new InvalidOperationException(MsgStorageStrings.InvalidValueType(typeof(string), value.GetType()));
            }
            MsgStorageRulesTable.InternalWriteString(writer, propertyTag.ToUnicode(), text);
        }
 private static void WriteBinary(MsgSubStorageWriter writer, TnefPropertyTag propertyTag, object value)
 {
     byte[] array = value as byte[];
     if (array == null)
     {
         throw new InvalidOperationException(MsgStorageStrings.InvalidValueType(typeof(byte[]), value.GetType()));
     }
     writer.Storage.WriteBytesToStream(Util.PropertyStreamName(propertyTag), array);
     MsgStoragePropertyData.WriteStream(writer.PropertiesWriter, propertyTag, array.Length);
 }
        private static void InternalWriteString(MsgSubStorageWriter writer, TnefPropertyTag propertyTag, string value)
        {
            MsgSubStorageWriter.WriterBuffer valueBuffer = writer.ValueBuffer;
            int unicodeByteCount = Util.GetUnicodeByteCount(value);

            byte[] array = valueBuffer.PreallocateBuffer(unicodeByteCount);
            int    num   = Util.StringToUnicodeBytes(value, array);

            writer.Storage.WriteBytesToStream(Util.PropertyStreamName(propertyTag), array, num);
            MsgStoragePropertyData.WriteStream(writer.PropertiesWriter, propertyTag, num);
        }
Esempio n. 6
0
        public void StartRecipient()
        {
            this.CheckDisposed("MsgStorageWriter::StartRecipient");
            this.CheckFailure();
            MsgSubStorageWriter msgSubStorageWriter = this.messageWriter.OpenRecipientWriter();

            if (this.componentWriter != null)
            {
                this.componentWriter.Close();
            }
            this.componentWriter = msgSubStorageWriter;
        }
 private static void WriteGuidArray(MsgSubStorageWriter writer, TnefPropertyTag propertyTag, object value)
 {
     Guid[] arrayValue = value as Guid[];
     if (arrayValue == null)
     {
         throw new InvalidOperationException(MsgStorageStrings.InvalidValueType(typeof(Guid[]), value.GetType()));
     }
     MsgStorageRulesTable.WriteArray(writer, propertyTag, arrayValue.Length, delegate(BinaryWriter binaryWriter, int index)
     {
         binaryWriter.Write(arrayValue[index].ToByteArray());
     });
 }
        private static void WriteGuid(MsgSubStorageWriter writer, TnefPropertyTag propertyTag, object value)
        {
            Guid?guid = value as Guid?;

            if (guid == null)
            {
                throw new InvalidOperationException(MsgStorageStrings.InvalidValueType(typeof(Guid), value.GetType()));
            }
            byte[] array = guid.Value.ToByteArray();
            writer.Storage.WriteBytesToStream(Util.PropertyStreamName(propertyTag), array);
            MsgStoragePropertyData.WriteStream(writer.PropertiesWriter, propertyTag, array.Length);
        }
        private static void WriteBoolean(MsgSubStorageWriter writer, TnefPropertyTag propertyTag, object value)
        {
            bool?flag = value as bool?;

            if (flag == null)
            {
                throw new InvalidOperationException(MsgStorageStrings.InvalidValueType(typeof(bool), value.GetType()));
            }
            short propertyValue = flag.Value ? 1 : 0;

            MsgStoragePropertyData.WriteProperty(writer.PropertiesWriter, propertyTag, propertyValue);
        }
        private static void WriteArray(MsgSubStorageWriter writer, TnefPropertyTag propertyTag, int arrayLength, MsgStorageRulesTable.WriteValueDelegate writeValue)
        {
            MsgSubStorageWriter.WriterBuffer valueBuffer = writer.ValueBuffer;
            for (int num = 0; num != arrayLength; num++)
            {
                writeValue(valueBuffer.Writer, num);
            }
            int length = valueBuffer.GetLength();

            byte[] buffer = valueBuffer.GetBuffer();
            writer.Storage.WriteBytesToStream(Util.PropertyStreamName(propertyTag), buffer, length);
            MsgStoragePropertyData.WriteStream(writer.PropertiesWriter, propertyTag, length);
        }
        private static void InternalWriteStringArray(MsgSubStorageWriter writer, TnefPropertyTag propertyTag, string[] arrayValue)
        {
            MsgSubStorageWriter.WriterBuffer lengthsBuffer = writer.LengthsBuffer;
            for (int num = 0; num != arrayValue.Length; num++)
            {
                MsgSubStorageWriter.WriterBuffer valueBuffer = writer.ValueBuffer;
                int    unicodeByteCount = Util.GetUnicodeByteCount(arrayValue[num]);
                byte[] array            = valueBuffer.PreallocateBuffer(unicodeByteCount);
                int    num2             = Util.StringToUnicodeBytes(arrayValue[num], array);
                lengthsBuffer.Writer.Write(num2);
                writer.Storage.WriteBytesToStream(Util.PropertyStreamName(propertyTag, num), array, num2);
            }
            int length = lengthsBuffer.GetLength();

            byte[] buffer = lengthsBuffer.GetBuffer();
            writer.Storage.WriteBytesToStream(Util.PropertyStreamName(propertyTag), buffer, length);
            MsgStoragePropertyData.WriteStream(writer.PropertiesWriter, propertyTag, length);
        }
        private static void WriteArrayOfBinary(MsgSubStorageWriter writer, TnefPropertyTag propertyTag, object value)
        {
            byte[][] array = value as byte[][];
            if (array == null)
            {
                throw new InvalidOperationException(MsgStorageStrings.InvalidValueType(typeof(byte[][]), value.GetType()));
            }
            MsgSubStorageWriter.WriterBuffer lengthsBuffer = writer.LengthsBuffer;
            for (int num = 0; num != array.Length; num++)
            {
                lengthsBuffer.Writer.Write(array[num].Length);
                lengthsBuffer.Writer.Write(0);
                writer.Storage.WriteBytesToStream(Util.PropertyStreamName(propertyTag, num), array[num]);
            }
            int length = lengthsBuffer.GetLength();

            byte[] buffer = lengthsBuffer.GetBuffer();
            writer.Storage.WriteBytesToStream(Util.PropertyStreamName(propertyTag), buffer, length);
            MsgStoragePropertyData.WriteStream(writer.PropertiesWriter, propertyTag, length);
        }
        private static void WriteSysTime(MsgSubStorageWriter writer, TnefPropertyTag propertyTag, object value)
        {
            DateTime?dateTime = value as DateTime?;

            if (dateTime == null)
            {
                throw new InvalidOperationException(MsgStorageStrings.InvalidValueType(typeof(DateTime), value.GetType()));
            }
            long propertyValue = 0L;

            try
            {
                propertyValue = dateTime.Value.ToFileTimeUtc();
            }
            catch (ArgumentOutOfRangeException)
            {
                propertyValue = 0L;
            }
            MsgStoragePropertyData.WriteProperty(writer.PropertiesWriter, propertyTag, propertyValue);
        }
 private static void WriteSysTimeArray(MsgSubStorageWriter writer, TnefPropertyTag propertyTag, object value)
 {
     DateTime[] arrayValue = value as DateTime[];
     if (arrayValue == null)
     {
         throw new InvalidOperationException(MsgStorageStrings.InvalidValueType(typeof(DateTime[]), value.GetType()));
     }
     MsgStorageRulesTable.WriteArray(writer, propertyTag, arrayValue.Length, delegate(BinaryWriter binaryWriter, int index)
     {
         long value2 = 0L;
         try
         {
             value2 = arrayValue[index].ToFileTimeUtc();
         }
         catch (ArgumentOutOfRangeException)
         {
             value2 = 0L;
         }
         binaryWriter.Write(value2);
     });
 }
Esempio n. 15
0
        internal MsgSubStorageWriter OpenAttachmentWriter()
        {
            int                 attachmentCount     = this.prefix.AttachmentCount;
            ComStorage          comStorage          = null;
            MsgSubStorageWriter msgSubStorageWriter = null;

            try
            {
                string storageName = Util.AttachmentStorageName(attachmentCount);
                comStorage          = this.subStorage.CreateStorage(storageName, ComStorage.OpenMode.CreateWrite);
                msgSubStorageWriter = new MsgSubStorageWriter(this.owner, MsgSubStorageType.Attachment, comStorage);
            }
            finally
            {
                if (msgSubStorageWriter == null && comStorage != null)
                {
                    comStorage.Dispose();
                }
            }
            this.prefix.AttachmentCount++;
            return(msgSubStorageWriter);
        }
 private static void WriteObject(MsgSubStorageWriter writer, TnefPropertyTag propertyTag, object value)
 {
     throw new NotSupportedException(MsgStorageStrings.UnsupportedPropertyType("[Object]"));
 }