Пример #1
0
        private string HandleGETWork(string sID)
        {
            lock (_Lock)
            {
                if (!_Machines.ContainsKey(sID))
                {
                    Console.WriteLine("HandleGETWork: Unknown machine '{0}' requested work!", sID);
                    return(null);
                }

                // Update timestamp.
                _Machines[sID].CurrentTimeout = 0;

                DetermineNextBuildMachine();

                ezGETWorkResponse response = new ezGETWorkResponse();
                // If the currently querying build machine is the 'chosen one' we allow it to build the next revision.
                if (_Machines[sID] == _NextMachine && _NextMachine.State == BuildMachine.BuildMachineState.Idle)
                {
                    BuildMachine machine = _Machines[sID];
                    machine.CurrentTimeout = 0;
                    machine.State          = machine.NeedClean ? BuildMachine.BuildMachineState.RunBuildAndClean : BuildMachine.BuildMachineState.RunBuild;
                    response.Revision      = machine.Settings.Revision + 1; // Build next revision in line.
                    response.Response      = machine.NeedClean ? ezGETWorkResponse.WorkResponse.RunBuildAndClean : ezGETWorkResponse.WorkResponse.RunBuild;
                    Console.WriteLine("HandleGETWork: Machine '{0}' is now building!", sID);
                }

                return(Newtonsoft.Json.JsonConvert.SerializeObject(response));
            }
        }
Пример #2
0
        void RequestWork()
        {
            string url = ServerUrl(ezBuildRequestMessageType.GETWork);

            HttpHelper.ResponseResult response = HttpHelper.GET(url);

            if (response == null)
            {
                Console.WriteLine("RequestWork: Server not responding at URL '{0}'.", url);
                return;
            }

            if (response.StatusCode == HttpStatusCode.BadRequest)
            {
                SendSettings();
                return;
            }

            if (response.StatusCode != HttpStatusCode.OK)
            {
                Console.WriteLine("RequestWork: Server returned StatusCode '{0}'.", response.StatusCode);
                return;
            }

            try
            {
                ezGETWorkResponse workResponse = Newtonsoft.Json.JsonConvert.DeserializeObject <ezGETWorkResponse>(response.Message);
                if (workResponse.Response == ezGETWorkResponse.WorkResponse.RunBuild)
                {
                    HandleRunRequest(workResponse.Revision);
                    return;
                }
                else if (workResponse.Response == ezGETWorkResponse.WorkResponse.RunBuildAndClean)
                {
                    HandleRunRequest(workResponse.Revision, true);
                    return;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("RequestWork Failed: {0}.", ex.Message);
            }
        }