public IHttpActionResult RegisterMobileDevice([FromBody] iTicketConfigurationModel model, DateTime eventsAfter) { try { string pointA = model.PointAIpAddress + ":" + model.PointAPort; string pointB = model.PointBIpAddress + ":" + model.PointBPort; SectionConfigurationModel sectionModel = GetSectionByIP(pointA, pointB, eventsAfter); if (sectionModel == null) { string processToStart = ConfigurationManager.AppSettings["DistanceOverTimeAdapter"].ToString(); Process process = new Process(); if (!string.IsNullOrEmpty(model.PointAIpAddress) && model.PointAPort > 0 && !string.IsNullOrEmpty(model.PointBIpAddress) && model.PointBPort > 0) { process.StartInfo = new ProcessStartInfo { FileName = processToStart, Arguments = string.Format("-listenerType=S -listenMs={0} -ipA={1}:{2} -ipB={3}:{4}", model.PollMs, model.PointAIpAddress, model.PointAPort, model.PointBIpAddress, model.PointBPort) }; } process.Start(); } DateTime timeout = DateTime.Now.AddMinutes(2); while (true) { if (DateTime.Now >= timeout) { return(this.BadRequestEx(Error.RegisterMobileDeviceTimeout)); } sectionModel = GetSectionByIP(pointA, pointB, eventsAfter); if (sectionModel != null) { break; } Thread.Sleep(1000); } return(Ok(sectionModel)); } catch (Exception ex) { return(this.BadRequestEx(Error.PopulateUnexpectedException(ex))); } }
public SectionConfigurationModel RegisterMobileDevice(iTicketConfigurationModel model, DateTime eventsAfter) { var request = new RestRequest("api/Configuration/DOT/Registration/MobileDevice", Method.POST); request.AddQueryParameter("eventsAfter", eventsAfter.ToString()); request.AddJsonBody(model); var response = RestClient.Execute(request); if (response.StatusCode != HttpStatusCode.OK) { throw CreateException(response); } return(JsonConvert.DeserializeObject <SectionConfigurationModel>(response.Content)); }