示例#1
0
 public IEnumerable <OperationResult> GetAll()
 {
     using (var context = new OperationResultContext())
     {
         return(context.OperationResults.ToList());
     }
 }
示例#2
0
 public async Task SendMessageAsync(OperationResultContext context)
 {
     var token   = CancellationToken.None;
     var type    = WebSocketMessageType.Text;
     var message = context.CreateJson().ToUtf8Bytes();
     var buffer  = new ArraySegment <byte>(message);
     await _webSocket.SendAsync(buffer, type, true, token);
 }
示例#3
0
 public void Save(OperationResult entity)
 {
     using (var context = new OperationResultContext())
     {
         context.OperationResults.Add(entity);
         context.SaveChanges();
     }
 }
示例#4
0
        public async Task Completed([FromBody] OperationResultContext context)
        {
            // Notify log to Master Server
            await _masterMessageDispatcher.SendMessageAsync(context);

            // Ready for new task order a new random message
            var clientSocket = _dispatcherBag.Where(x => x.ClientId == context.ClientId).FirstOrDefault();

            if (clientSocket != null)
            {
                await clientSocket.SendMessageAsync();
            }
        }
示例#5
0
        private async Task PostStatus(OperationResultContext resultContext)
        {
            HttpRequestMessage request    = new HttpRequestMessage();
            HttpMethod         httpMethod = HttpMethod.Get;
            UriBuilder         requestUri = new UriBuilder(_settings.ApiBaseHostAddress);

            requestUri.Path    = "api/Task/Completed";
            request.Method     = HttpMethod.Post;
            request.RequestUri = requestUri.Uri;
            request.Content    = new StringContent(JsonConvert.SerializeObject(resultContext), Encoding.UTF8, "application/json");
            using (var client = new HttpClient())
            {
                await client.SendAsync(request, CancellationToken.None);
            }
        }
示例#6
0
        public async Task DoWork(MessageDefinitions message)
        {
            // Long running process;
            await Task.Delay(4000);

            var tobeCompiledPath = Path.Combine(PlatformServices.Default.Application.ApplicationBasePath, @"..\..\ToBeCompiled");
            var projectPath      = $"{tobeCompiledPath}\\{message.Recipient.AssemblyName}";

            Process process = new Process()
            {
                StartInfo = new ProcessStartInfo("cmd")
                {
                    WorkingDirectory       = projectPath,
                    RedirectStandardInput  = true,
                    RedirectStandardOutput = true,
                    UseShellExecute        = false,
                    CreateNoWindow         = true
                }
            };

            process.Start();
            // only if the command preceding the symbol is successful
            process.StandardInput.WriteLine("dotnet build");
            process.StandardInput.Flush();

            string output = process.StandardOutput.ReadToEnd();

            process.WaitForExit();
            process.Dispose();

            Console.WriteLine(output);

            var context = new OperationResultContext
            {
                ClientId      = ClientId,
                Command       = Commands.Build,
                CompletedDate = DateTime.Now,
                State         = OperationResultState.Success,
                ResultInfo    = output
            };

            await PostStatus(context);
        }