예제 #1
0
파일: JobTask.cs 프로젝트: xxyss/Swift
        /// <summary>
        /// 加载结果
        /// </summary>
        public void LoadResult()
        {
            var physicalResultPath = SwiftConfiguration.GetJobTaskResultPath(CurrentTaskPath);

            if (!File.Exists(physicalResultPath))
            {
                throw new Exception(string.Format("任务结果文件不存在:{0}", physicalResultPath));
            }

            var taskResult = string.Empty;

            try
            {
                taskResult = File.ReadAllText(physicalResultPath, Encoding.UTF8);
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("读取任务结果文件异常:{0}", ex.Message));
            }

            if (string.IsNullOrWhiteSpace(taskResult))
            {
                throw new Exception(string.Format("任务结果文件为空:{0}", physicalResultPath));
            }

            Result = taskResult;
        }
예제 #2
0
        /// <summary>
        /// 处理下载请求
        /// </summary>
        private byte[] ProcessDownloadRequest(string requestUrl, byte[] inputData, NameValueCollection paras)
        {
            string filePath = string.Empty;

            // 如果指定了文件名,则使用文件名
            string fileName = paras["fileName"];

            if (!string.IsNullOrWhiteSpace(fileName))
            {
                fileName = HttpUtility.UrlDecode(fileName);
                filePath = Path.Combine(SwiftConfiguration.BaseDirectory, fileName.Replace('/', Path.DirectorySeparatorChar));
            }

            // 如果未指定文件名,则根据业务参数计算
            if (string.IsNullOrWhiteSpace(filePath))
            {
                if (requestUrl == "/download/task/requirement")
                {
                    var jobName = paras["jobName"];
                    var jobId   = paras["jobId"];
                    var taskId  = paras["taskId"];
                    filePath = SwiftConfiguration.GetJobTaskRequirementPath(jobName, jobId, int.Parse(taskId));
                }

                if (requestUrl == "/download/job/package")
                {
                    var jobName    = paras["jobName"];
                    var jobVersion = paras["jobVersion"];
                    filePath = SwiftConfiguration.GetJobPackagePath(jobName, jobVersion);
                }

                if (requestUrl == "/download/task/result")
                {
                    var jobName = paras["jobName"];
                    var jobId   = paras["jobId"];
                    var taskId  = paras["taskId"];
                    filePath = SwiftConfiguration.GetJobTaskResultPath(jobName, jobId, int.Parse(taskId));
                }

                if (requestUrl == "/download/job/result")
                {
                    var jobName = paras["jobName"];
                    var jobId   = paras["jobId"];
                    filePath = SwiftConfiguration.GetJobResultPackagePath(jobName, jobId);
                }
            }

            LogWriter.Write(string.Format("处理下载请求:{0}", filePath));

            if (!File.Exists(filePath))
            {
                throw new FileNotFoundException("文件不存在:" + filePath);
            }

            return(File.ReadAllBytes(filePath));
        }
예제 #3
0
파일: JobTask.cs 프로젝트: xxyss/Swift
        /// <summary>
        /// 保存任务结果
        /// </summary>
        public void WriteResult()
        {
            var taskPath = CurrentTaskPath;

            if (!Directory.Exists(taskPath))
            {
                Directory.CreateDirectory(taskPath);
            }

            string taskRequirementPath = SwiftConfiguration.GetJobTaskResultPath(taskPath);

            File.WriteAllText(taskRequirementPath, Result, Encoding.UTF8);
        }
예제 #4
0
        /// <summary>
        /// 下载数据处理
        /// </summary>
        /// <param name="msgType"></param>
        /// <param name="paras"></param>
        /// <param name="data"></param>
        private void ProcessResponse(string msgType, Dictionary <string, string> paras, byte[] data, CancellationToken cancellationToken = default(CancellationToken))
        {
            string filePath = string.Empty;

            paras.TryGetValue("fileName", out string fileName);
            if (!string.IsNullOrWhiteSpace(fileName))
            {
                filePath = Path.Combine(SwiftConfiguration.BaseDirectory, fileName.Replace('/', Path.DirectorySeparatorChar));
            }

            if (string.IsNullOrWhiteSpace(filePath))
            {
                if (msgType == "download/job/package")
                {
                    var jobName    = paras["jobName"];
                    var jobVersion = paras["jobVersion"];
                    filePath = SwiftConfiguration.GetJobPackagePath(jobName, jobVersion);
                }

                if (msgType == "download/task/requirement")
                {
                    var jobName = paras["jobName"];
                    var jobId   = paras["jobId"];
                    var taskId  = int.Parse(paras["taskId"]);
                    filePath = SwiftConfiguration.GetJobTaskRequirementPath(jobName, jobId, taskId);
                }

                if (msgType == "download/task/result")
                {
                    var jobName = paras["jobName"];
                    var jobId   = paras["jobId"];
                    var taskId  = int.Parse(paras["taskId"]);
                    filePath = SwiftConfiguration.GetJobTaskResultPath(jobName, jobId, taskId);
                }
            }

            LogWriter.Write(string.Format("收到下载数据:{0},{1}", msgType, filePath));

            SaveDownloadFile(filePath, data, cancellationToken);
        }