コード例 #1
0
        public SystemChangedRespMC SystemChangedStreaming(SystemChangedReqMC request)
        {
            const string StatusReceiving = "Receiving";
            const string StatusCompleted = "Completed";
            const string StatusFailed    = "Failed   ";

            try
            {
                AddProgressBar(request.Id);

                using (FileStream createdFile = File.Create(Environment.CurrentDirectory + @"\" + Path.GetFileName(request.FullPath)))
                {
                    const int Length         = 4096;
                    byte[]    buffer         = new byte[Length];
                    int       bytesRead      = request.FileStream.Read(buffer, 0, Length);
                    long      totalBytesRead = bytesRead;

                    while (bytesRead > 0)
                    {
                        DrawFileProgressBar(GetProgressBarRow(request.Id), Path.GetFileName(request.FullPath), (int)totalBytesRead, (int)request.FileStreamLength, StatusReceiving);
                        createdFile.Write(buffer, 0, bytesRead);
                        bytesRead      = request.FileStream.Read(buffer, 0, Length);
                        totalBytesRead = totalBytesRead + bytesRead;
                    }

                    request.FileStream.Close();
                }

                if (request.Checksum == CalculateMD5Sum(Environment.CurrentDirectory + @"\" + Path.GetFileName(request.FullPath)))
                {
                    DrawFileProgressBar(GetProgressBarRow(request.Id), Path.GetFileName(request.FullPath), (int)request.FileStreamLength, (int)request.FileStreamLength, StatusCompleted);
                }
                else
                {
                    DrawFileProgressBar(GetProgressBarRow(request.Id), Path.GetFileName(request.FullPath), (int)request.FileStreamLength, (int)request.FileStreamLength, StatusFailed);
                }

                RemoveProgressBar(request.Id);

                SystemChangedRespMC systemChangedRespMC = new SystemChangedRespMC();
                systemChangedRespMC.Message = "Request handled.";

                return(systemChangedRespMC);
            }
            catch (Exception ex)
            {
                int row;
                if (TryGetProgressBarRow(request.Id, out row))
                {
                    DrawFileProgressBar(row, Path.GetFileName(request.FullPath), (int)request.FileStreamLength, (int)request.FileStreamLength, StatusFailed);
                    RemoveProgressBar(request.Id);
                }

                DefaultFault defaultFault = new DefaultFault();
                defaultFault.Message = ex.Message;
                defaultFault.Id      = Guid.NewGuid();

                throw new FaultException <DefaultFault>(defaultFault);
            }
        }
コード例 #2
0
        public string SystemChangedStreaming(string changeType, string checksum, string daemonName, DateTime dateTime, string fileName, long fileStreamLength, string fullPath, Guid id, string machineName, string oldFullPath, Stream fileStream)
        {
            SystemChangedReqMC inValue = new SystemChangedReqMC();

            inValue.ChangeType       = changeType;
            inValue.Checksum         = checksum;
            inValue.DaemonName       = daemonName;
            inValue.DateTime         = dateTime;
            inValue.FileName         = fileName;
            inValue.FileStreamLength = fileStreamLength;
            inValue.FullPath         = fullPath;
            inValue.Id          = id;
            inValue.MachineName = machineName;
            inValue.OldFullPath = oldFullPath;
            inValue.FileStream  = fileStream;
            SystemChangedRespMC retVal = ((IFileWatcherStreamingService)(this)).SystemChangedStreaming(inValue);

            return(retVal.Message);
        }