Ejemplo n.º 1
0
        public MobeelizerOperationError WaitUntilSyncRequestComplete(string ticket)
        {
            MobeelizerSynchronizationStatus sycStatus = MobeelizerSynchronizationStatus.REJECTED;

            for (int i = 0; i < 240; i++)
            {
                WebRequest request = WebRequest.Create(GetUrl(String.Format("/checkStatus?ticket={0}&aaa={1}", ticket, DateTime.Now.Ticks)));
                request.Method = "GET";
                SetHeaders(request, false, true);

                MobeelizerResponse result = new Synchronizer().GetResponse(request);
                if (result.StatusCode == HttpStatusCode.OK)
                {
                    String strSyncStatus = (String)(result as MobeelizerJsonResponse).Json["status"];
                    sycStatus = (MobeelizerSynchronizationStatus)Enum.Parse(typeof(MobeelizerSynchronizationStatus), strSyncStatus, true);
                }
                else
                {
                    throw new IOException(result.StatusCode.ToString() + ": " + (result as MobeelizerJsonResponse).Json.ToString());
                }

                if (sycStatus == MobeelizerSynchronizationStatus.REJECTED || sycStatus == MobeelizerSynchronizationStatus.CONFIRMED)
                {
                    return(MobeelizerOperationError.SyncRejected((String)(result as MobeelizerJsonResponse).Json["message"], (String)(result as MobeelizerJsonResponse).Json["result"]));
                }
                else if (sycStatus == MobeelizerSynchronizationStatus.FINISHED)
                {
                    return(null);
                }

                try
                {
                    Thread.Sleep(100 * i + 500);
                }
                catch (Exception e)
                {
                    throw new IOException(e.Message, e);
                }
            }

            return(MobeelizerOperationError.Other("Sync timeout."));;
        }