internal override void Execute()
{
var cmdlet = (ReceiveTmxTestTaskCommand)Cmdlet;
var clientSettings = ClientSettings.Instance;
clientSettings.StopImmediately = false;
// 20150918
// var taskLoader = new TaskLoader(new RestRequestCreator());
// var taskLoader = new TaskLoader();
var taskLoader = ProxyFactory.Get<TaskLoader>();
// 20141020 squeezing a task to its proxy
ITestTask task = null;
// ITestTaskProxy task = null;
// ITestTaskCodeProxy task = null;
// temporarily
// TODO: to a template method
var startTime = DateTime.Now;
while (!clientSettings.StopImmediately) {
// TODO: move to aspect
try {
task = taskLoader.GetCurrentTask();
}
catch (ClientNotRegisteredException) {
if (Guid.Empty != ClientSettings.Instance.ClientId && string.Empty != ClientSettings.Instance.ServerUrl) {
// 20150918
// var registration = new Registration(new RestRequestCreator());
// var registration = new Registration();
var registration = ProxyFactory.Get<Registration>();
ClientSettings.Instance.ClientId = registration.SendRegistrationInfoAndGetClientId(ClientSettings.Instance.CurrentClient.CustomString);
}
// TODO: AOP
Trace.TraceWarning("ReceiveTestTaskCommand.1");
// temporary
Trace.TraceWarning("ClientNotRegisteredException");
throw;
}
catch (Exception e) {
// NullreferenceException
// TODO: AOP
Trace.TraceWarning("ReceiveTestTaskCommand.2");
// temporary
Trace.TraceWarning(e.Message);
}
if (null != task)
break;
if (!cmdlet.Continuous)
if ((DateTime.Now - startTime).TotalSeconds >= cmdlet.Seconds)
throw new Exception("Failed to receive a task in " + cmdlet.Seconds + " seconds");
System.Threading.Thread.Sleep(Preferences.ReceivingTaskSleepIntervalMilliseconds);
}
clientSettings.StopImmediately = false;
clientSettings.CurrentTask = task;
cmdlet.WriteObject(task);
}
}