private void MakeAbort(MakeActiveSelectedReleaseCommand notification, SyrupExecuteResult executeResult)
 {
     _logCtrl.Info($"Error: {executeResult.Messages.First()}");
     _mediator.Publish(
         new LongProcessEndedEvent($"{notification.LocalReleaseInfoDto.Name} activation faild", int.MinValue,
                                   LongProcessType.IsIndeterminate));
 }
Example #2
0
        private SyrupExecuteResult Run(ExecutorRequest syrupContainer)
        {
            var    executeResult = new SyrupExecuteResult();
            string fileString;
            var    text     = JsonConvert.SerializeObject(syrupContainer);
            var    path     = _registry.SyrupExecutorFilePath;
            var    fileName = $"{Consts.MEM_FILE_PREFIX}-{Guid.NewGuid()}";
            var    size     = Consts.MEM_FILE_SIZE;

            _log.Debug($"Create mem file; Name: {fileName}; Size: {size}b ");
            _log.Debug($"Script runner: {path}");
            using (var mmf = MemoryMappedFile.CreateNew(fileName, size))
            {
                using (var stream = mmf.CreateViewStream())
                {
                    var writer = new BinaryWriter(stream);
                    writer.Write(text);
                }

                _log.Debug($"Starting script runner: {path}");
                // Command line args are separated by a space
                var p = Process.Start(path, fileName);

                _log.Debug("Waiting child to die");

                p.WaitForExit();
                _log.Debug("Child died");

                using (var stream = mmf.CreateViewStream())
                {
                    var reader = new BinaryReader(stream);
                    fileString = reader.ReadString();
                }
            }

            _log.Debug($"Execute result: {fileString}");
            return(executeResult);
        }