예제 #1
0
            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);
            }
예제 #2
0
        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);
        }
예제 #3
0
 public JobStartedEventArgs(AgentConfig agent)
 {
     Agent = agent;
 }
예제 #4
0
 public Agent(string agentDir, Guid id, AgentConfig config)
 {
     AgentDir    = agentDir;
     Id          = id;
     this.config = config;
 }
예제 #5
0
            public async Task UpdateConfig(AgentConfig config, CancellationToken cancellationToken)
            {
                await WriteConfig(config, cancellationToken);

                this.config = config;
            }
예제 #6
0
 public void Started(AgentConfig agent)
 {
     state = BuildState.Running;
     JobStarted?.Invoke(this, new JobStartedEventArgs(agent));
 }