Esempio n. 1
0
        protected virtual IActionName OnResolveActionName(string actionFullName)
        {
            IActionName actionName = this.actionNameResolveService.ResolverName(actionFullName);

            if (actionName == null)
            {
                throw Errors.ResolveNullActionName(actionFullName);
            }
            return(actionName);
        }
        public void ShouldParseSuccess(string input, string provider, string pack, string name, string version)
        {
            IActionNameResolveService actionNameResolveService = this.GetRequiredService <IActionNameResolveService>();
            IActionName actionName = actionNameResolveService.ResolverName(input);

            actionName.Provider.Should().Be(provider);
            actionName.Pack.Should().Be(pack);
            actionName.Name.Should().Be(name);
            actionName.Version.Should().Be(version);
        }
Esempio n. 3
0
        protected virtual IActionMeta OnGetActionMeta(IActionName actionName)
        {
            _ = actionName ?? throw new ArgumentNullException(nameof(actionName));
            var actionMeta = this.metaService.GetActionMeta(actionName);

            if (actionMeta == null)
            {
                throw Errors.GetNullMetaInfo(actionName.ToString());
            }
            return(metaService.GetActionMeta(actionName));
        }
Esempio n. 4
0
        protected virtual IActionRuntime OnGetActionRuntime(IActionName actionName)
        {
            _ = actionName ?? throw new ArgumentNullException(nameof(actionName));
            var actionRuntime = runtimeService.GetRunTime(actionName);

            if (actionRuntime == null)
            {
                throw Errors.GetNullRuntimeInfo(actionName.ToString());
            }
            return(actionRuntime);
        }
        public void ShouldThrowActionException(string input)
        {
            IActionNameResolveService actionNameResolveService = this.GetRequiredService <IActionNameResolveService>();
            Action action = () => { actionNameResolveService.ResolverName(input); };

            var exp = Assert.ThrowsException <ActionException>(() =>
            {
                IActionName actionName = actionNameResolveService.ResolverName(input);
            });

            action.Should().Throw <ActionException>()
            .And.ErrorCode.Should().Be(nameof(ErrorCodes.InvalidActionName));
        }
Esempio n. 6
0
 public IActionMeta GetActionMeta(IActionName actionName)
 {
     try
     {
         string metaFile = this.OnGetMetaFile(actionName);
         var    metaInfo = fileStoreService.GetObject <MetaInfo>(metaFile);
         return(ConvertToActionMeta(metaInfo));
     }
     catch (System.Exception ex)
     {
         throw Errors.GetMetaInfoError(ex, actionName);
     }
 }
Esempio n. 7
0
        protected virtual string OnGetMetaFile(IActionName actionName)
        {
            _ = actionName ?? throw new ArgumentNullException(nameof(actionName));
            List <string> paths = new List <string>()
            {
                packOption.Value.RootDir,
                actionName.Provider,
                actionName.Pack,
                actionName.Version,
                $"{actionName.Name}.action"
            };

            return(Path.Combine(paths.ToArray()));
        }
 public IActionRuntime GetRunTime(IActionName actionName)
 {
     _ = actionName ?? throw new ArgumentNullException(nameof(actionName));
     try
     {
         string packDir = Path.Combine(this.packOption.Value.RootDir, actionName.Provider, actionName.Pack, actionName.Version);
         return(new ActionRuntime()
         {
             WorkingDirectory = Path.GetFullPath(packDir),
             OSPlatForm = GetCurrentOSPlatform()
         });
     }
     catch (Exception ex)
     {
         throw Errors.GetRuntimeInfoError(ex, actionName);
     }
 }
        public void PreparePack(IActionName actionName, IActionRuntime actionRuntime)
        {
            _ = actionName ?? throw new ArgumentNullException(nameof(actionName));
            string lockFile  = System.IO.Path.Combine(actionRuntime.WorkingDirectory, LOCK_FILENAME);
            string readyFile = System.IO.Path.Combine(actionRuntime.WorkingDirectory, READY_FILENAME);

            if (File.Exists(readyFile))
            {
                // package is download already;
                return;
            }
            else if (File.Exists(lockFile))
            {
                // other thread or process download the package
                this.WaitForDownLoadReady(readyFile).Wait(TimeSpan.FromMinutes(15));
            }
            else
            {
                // begin download files
                this.DownLoadPackage(actionName, actionRuntime.WorkingDirectory, lockFile, readyFile);
            }
        }
 private void DownLoadPackage(IActionName actionName, string WorkingDirectory, string lockFile, string readyFile)
 {
     try
     {
         Directory.CreateDirectory(Path.GetDirectoryName(lockFile));
         using (new FileStream(lockFile, FileMode.CreateNew)) { };
         var packFiles     = packageProviderService.GetAllPackageFiles(actionName.Provider, actionName.Pack, actionName.Version);
         var downLoadInfos = packFiles.Select(p => new DownloadInfo
         {
             FileSize      = p.FileSize,
             FileHash      = p.FileHash,
             FileUrl       = p.FileUrl,
             LocalFilePath = Path.Combine(WorkingDirectory, p.Path)
         }).ToArray();
         downloadService.DownLoadFiles(downLoadInfos).Wait();
         File.WriteAllText(readyFile, "download ready.");
     }
     finally
     {
         //remove lockFile
         File.Delete(lockFile);
     }
 }
Esempio n. 11
0
 public static ActionException GetMetaInfoError(Exception exception, IActionName actionName)
 {
     return(FromErrorMessage(nameof(ErrorCodes.E10002), exception, ToText(actionName)));
 }
Esempio n. 12
0
 protected virtual IActionContext OnCreateActionContext(IExecuteContext executeContext, IActionName actionName, IActionRuntime actionRuntime, IActionMeta actionMeta)
 {
     _ = executeContext ?? throw new ArgumentNullException(nameof(executeContext));
     return(new ActionContext()
     {
         ExecutePath = executeContext.ExecutePath,
         Token = executeContext.Token,
         MetaInfo = actionMeta,
         RuntimeInfo = actionRuntime,
         ExecuteName = executeContext.ExecuteName,
         ServiceProvider = this.serviceProvider,
         Parameters = this.ConvertParameter(actionMeta, executeContext.ExecuteParameter),
         Logger = new ActionLogger(),
         Name = actionName
     });
 }
Esempio n. 13
0
 protected virtual void OnPrepareAction(IActionName actionName, IActionRuntime actionRuntime)
 {
     this.preparePackService.PreparePack(actionName, actionRuntime);
 }