コード例 #1
0
        /// <summary>
        /// Gets attachment stream.
        /// </summary>
        /// <returns>Returns attachment stream.</returns>
        internal Stream GetStream()
        {
            if (m_pStream == null)
            {
                m_pStream = File.OpenRead(m_FileName);
            }

            if (m_ZipCompress)
            {
                MemoryStreamEx retVal = new MemoryStreamEx();

                using (ZipArchive archive = new ZipArchive(retVal, ZipArchiveMode.Create)){
                    ZipArchiveEntry entry = archive.CreateEntry(m_Name, CompressionLevel.Optimal);
                    using (Stream zipStream = entry.Open()){
                        Net_Utils.StreamCopy(m_pStream, zipStream, 64000);
                    }
                }
                retVal.Position = 0;
                CloseStream();

                return(retVal);
            }

            return(m_pStream);
        }
コード例 #2
0
ファイル: GZipTests.cs プロジェクト: danygolden/gianfratti
        public void InputStreamOwnership()
        {
            MemoryStreamEx  memStream = new MemoryStreamEx();
            GZipInputStream s         = new GZipInputStream(memStream);

            Assert.IsFalse(memStream.IsClosed, "Shouldnt be closed initially");
            Assert.IsFalse(memStream.IsDisposed, "Shouldnt be disposed initially");

            s.Close();

            Assert.IsTrue(memStream.IsClosed, "Should be closed after parent owner close");
            Assert.IsTrue(memStream.IsDisposed, "Should be disposed after parent owner close");

            memStream = new MemoryStreamEx();
            s         = new GZipInputStream(memStream);

            Assert.IsFalse(memStream.IsClosed, "Shouldnt be closed initially");
            Assert.IsFalse(memStream.IsDisposed, "Shouldnt be disposed initially");

            s.IsStreamOwner = false;
            s.Close();

            Assert.IsFalse(memStream.IsClosed, "Should not be closed after parent owner close");
            Assert.IsFalse(memStream.IsDisposed, "Should not be disposed after parent owner close");
        }
コード例 #3
0
        /// <summary>
        /// Gets attachment stream.
        /// </summary>
        /// <returns>Returns attachment stream.</returns>
        internal Stream GetStream()
        {
            if (m_pStream == null)
            {
                m_pStream = File.OpenRead(m_FileName);
            }

            if (m_ZipCompress)
            {
                #if NET20 || NET35 || NET40
                throw new InvalidOperationException("Not supported lower framework version than 4.5.");
                #else
                MemoryStreamEx retVal = new MemoryStreamEx();

                using (ZipArchive archive = new ZipArchive(retVal, ZipArchiveMode.Create)){
                    ZipArchiveEntry entry = archive.CreateEntry(m_Name, CompressionLevel.Optimal);
                    using (Stream zipStream = entry.Open()){
                        Net_Utils.StreamCopy(m_pStream, zipStream, 64000);
                    }
                }
                retVal.Position = 0;
                CloseStream();

                return(retVal);
                #endif
            }

            return(m_pStream);
        }
        /// <summary>
        /// Sets body data from the specified stream.
        /// </summary>
        /// <param name="stream">Source stream.</param>
        /// <param name="transferEncoding">Specifies content-transfer-encoding to use to encode data.</param>
        /// <exception cref="ArgumentNullException">Is raised when <b>stream</b> or <b>transferEncoding</b> is null reference.</exception>
        /// <exception cref="InvalidOperationException">Is raised when this method is accessed and this body is not bounded to any entity.</exception>
        public void SetData(Stream stream, string transferEncoding)
        {
            if (stream == null)
            {
                throw new ArgumentNullException("stream");
            }
            if (transferEncoding == null)
            {
                throw new ArgumentNullException("transferEncoding");
            }

            if (String2.Equals(transferEncoding, MIME_TransferEncodings.QuotedPrintable, StringComparison2.InvariantCultureIgnoreCase))
            {
                using (MemoryStreamEx fs = new MemoryStreamEx())
                {
                    QuotedPrintableStream encoder = new QuotedPrintableStream(new SmartStream(fs, false), FileAccess.ReadWrite);
                    Net_Utils.StreamCopy(stream, encoder, 84000);
                    encoder.Flush();
                    fs.Position = 0;
                    SetEncodedData(transferEncoding, fs);
                }
            }
            else if (String2.Equals(transferEncoding, MIME_TransferEncodings.Base64, StringComparison2.InvariantCultureIgnoreCase))
            {
                using (MemoryStreamEx fs = new MemoryStreamEx())
                {
                    Base64Stream encoder = new Base64Stream(fs, false, true, FileAccess.ReadWrite);
                    Net_Utils.StreamCopy(stream, encoder, 84000);
                    encoder.Finish();
                    fs.Position = 0;
                    SetEncodedData(transferEncoding, fs);
                }
            }
            else if (String2.Equals(transferEncoding, MIME_TransferEncodings.Binary, StringComparison2.InvariantCultureIgnoreCase))
            {
                SetEncodedData(transferEncoding, stream);
            }
            else if (String2.Equals(transferEncoding, MIME_TransferEncodings.EightBit, StringComparison2.InvariantCultureIgnoreCase))
            {
                SetEncodedData(transferEncoding, stream);
            }
            else if (String2.Equals(transferEncoding, MIME_TransferEncodings.SevenBit, StringComparison2.InvariantCultureIgnoreCase))
            {
                SetEncodedData(transferEncoding, stream);
            }
            else
            {
                throw new NotSupportedException("Not supported Content-Transfer-Encoding '" + transferEncoding + "'.");
            }
        }
コード例 #5
0
        public void MoveStream(int startIndex)
        {
            MemoryStreamEx activedStream = GetActivedStream();

            if (startIndex > 0)
            {
                if (startIndex < activedStream.Length)
                {
                    activedStreamIndex = (activedStreamIndex + 1) % streamArr.Length;

                    MemoryStreamEx newActivedStream = GetActivedStream();
                    newActivedStream.Clear();
                    activedStream.Write(activedStream.GetBuffer(), startIndex, ((int)activedStream.Length - startIndex));
                    activedStream.Clear();
                }
                else
                {
                    activedStream.Clear();
                }
            }
        }
コード例 #6
0
        public bool Execute(WorkFlowCommand command, Context context)
        {
            if (!CheckCondition(command, context))
            {
                return(true);
            }

            switch (command.Properties["Action"].Value)
            {
            case "ShowView":
                WorkflowManager.Instance.OnMessage(new MessageEventArgs(Messages.ShowView,
                                                                        command.Properties["ViewName"].ToString(context)));
                break;

            case "FinishSession":
                WorkflowManager.Instance.OnMessage(new MessageEventArgs(Messages.SessionFinished, context));
                break;

            case "SaveVariables":
                WorkflowManager.Instance.OnMessage(new MessageEventArgs(Messages.SaveVariables, context));
                break;

            case "CancelSession":
                WorkflowManager.Instance.OnMessage(new MessageEventArgs(Messages.SessionCanceled, context));
                break;

            case "PreviousView":
                WorkflowManager.Instance.OnMessage(new MessageEventArgs(Messages.PreviousView, context));
                break;

            case "UpdateThumb":
                WorkflowManager.Instance.OnMessage(new MessageEventArgs(Messages.ThumbCreate, context));
                break;

            case "NextPhoto":
                WorkflowManager.Instance.OnMessage(new MessageEventArgs(Messages.NextPhoto, context));
                break;

            case "PrevPhoto":
                WorkflowManager.Instance.OnMessage(new MessageEventArgs(Messages.PrevPhoto, context));
                break;

            case "DeletePhoto":
                WorkflowManager.Instance.OnMessage(new MessageEventArgs(Messages.DeletePhoto, context));
                break;

            case "ClearPhotos":
                WorkflowManager.Instance.OnMessage(new MessageEventArgs(Messages.ClearPhotos, context));
                break;

            case "ShowHelp":
                WorkflowManager.Instance.OnMessage(new MessageEventArgs(Messages.ShowHelp, context));
                break;

            case "LoadImage":
            {
                try
                {
                    var stream = new MemoryStreamEx();
                    var buffer = File.ReadAllBytes(context.FileItem.TempFile);
                    stream.Write(buffer, 0, buffer.Length);
                    stream.Seek(0, SeekOrigin.Begin);
                    context.ImageStream = stream;
                    Log.Debug("LoadImage executed");
                }
                catch (Exception e)
                {
                    Log.Debug("Error unload image", e);
                }
            }
            break;

            case "UnLoadImage":
            {
                try
                {
                    context.ImageStream?.Close();
                    Log.Debug("UnLoadImage executed");
                }
                catch (Exception e)
                {
                    Log.Debug("Error unload image", e);
                }
            }

            break;
            }
            return(true);
        }
コード例 #7
0
        public void DoReadData()
        {
            MemoryStreamEx stream       = bufferStream.GetActivedStream();
            int            streamLength = (int)stream.Length;

            if (streamLength >= MessageConst.MESSAGE_MIN_LENGTH)
            {
                int startIndex = 0;
                while (true)
                {
                    if (!stream.ReadInt(startIndex, out int totalLength))
                    {
                        break;
                    }
                    totalLength = IPAddress.NetworkToHostOrder(totalLength);
                    if (streamLength - startIndex < totalLength)
                    {
                        break;
                    }

                    int offsetIndex = startIndex;
                    offsetIndex += sizeof(int);

                    if (!stream.ReadByte(offsetIndex, out byte serialNum))
                    {
                        MessageError?.Invoke(MessageErrorCode.Reader_ReadSerialNumberError);
                        break;
                    }
                    if (serialNumber + 1 != serialNum)
                    {
                        MessageError?.Invoke(MessageErrorCode.Reader_CompareSerialNumberError);
                        break;
                    }

                    offsetIndex += sizeof(byte);
                    if (!stream.ReadInt(offsetIndex, out int messageID))
                    {
                        MessageError?.Invoke(MessageErrorCode.Reader_ReadMessageIDError);
                        break;
                    }

                    messageID = IPAddress.NetworkToHostOrder(messageID);

                    offsetIndex += sizeof(int);
                    if (offsetIndex < totalLength + startIndex)
                    {
                        int    messageDataLength = totalLength + startIndex - offsetIndex;
                        byte[] messageDatas      = new byte[messageDataLength];
                        if (stream.Read(messageDatas, 0, messageDataLength) != messageDataLength)
                        {
                            MessageError?.Invoke(MessageErrorCode.Reader_CompareMessageDataLengthError);
                            break;
                        }
                        MessageReceived?.Invoke(messageID, messageDatas);
                    }
                    else
                    {
                        MessageReceived?.Invoke(messageID, null);
                    }

                    startIndex  += totalLength;
                    serialNumber = serialNum;
                }

                bufferStream.MoveStream(startIndex);
            }
        }
コード例 #8
0
        public void OnDataReceived(byte[] bytes, int size)
        {
            MemoryStreamEx stream = bufferStream.GetActivedStream();

            stream.Write(bytes, 0, size);
        }