public async Task WriteConfig(AgentConfig?config, CancellationToken cancellationToken) { if (config == null) { config = Config; } var dir = AgentDir; var tmpFile = Path.Combine(dir, "agent.json.tmp"); var configStr = JsonConvert.SerializeObject(config); Directory.CreateDirectory(dir); await FileUtil.WriteAllTextToDiskAsync(tmpFile, configStr, Encoding.UTF8, cancellationToken); File.Move(tmpFile, Path.Combine(dir, "agent.json"), true); }
public async Task <IAgent> AddAgent(AgentConfig config) { Guid id; Agent agent; do { cancellationToken.ThrowIfCancellationRequested(); id = Guid.NewGuid(); var dir = Path.Combine(agentsDir, id.ToString()); agent = new Agent(dir, id, config); } while(!agents.TryAdd(id, agent)); await agent.WriteConfig(null, cancellationToken); return(agent); }
public JobStartedEventArgs(AgentConfig agent) { Agent = agent; }
public Agent(string agentDir, Guid id, AgentConfig config) { AgentDir = agentDir; Id = id; this.config = config; }
public async Task UpdateConfig(AgentConfig config, CancellationToken cancellationToken) { await WriteConfig(config, cancellationToken); this.config = config; }
public void Started(AgentConfig agent) { state = BuildState.Running; JobStarted?.Invoke(this, new JobStartedEventArgs(agent)); }