public void sync(Puzzle[] puzzles, int userid, IRestCallback cb) { if (!NetworkInterface.GetIsNetworkAvailable()) { cb.syncAllCallback(false, null); return; } lock (this) { if (webRequest != null) { cb.syncAllCallback(false, null); return; } } callback = cb; string request = String.Format(USERNAME_SERVICE + "/{0}/puzzle", userid); webRequest = (HttpWebRequest)WebRequest.Create(new Uri(request)); webRequest.Method = "POST"; IAsyncResult result = webRequest.BeginGetRequestStream(new AsyncCallback(requestSyncAllCreateStream), new SyncAllRequest(puzzles)); timer = new Timer(new TimerCallback(requestSyncAllTimeout), callback, 15 * 1000, Timeout.Infinite); }
private void requestSyncAllCompleted(IAsyncResult result) { HttpWebRequest wr = webRequest; lock (this) { webRequest = null; if (timer != null) { timer.Dispose(); timer = null; } } if (wr == null || !wr.HaveResponse) { callback.syncAllCallback(false, null); return; } try { HttpWebResponse webResponse = (HttpWebResponse)wr.EndGetResponse(result); if (webResponse.StatusCode != HttpStatusCode.OK) { callback.syncAllCallback(false, null); return; } XmlSerializer xml = new XmlSerializer(typeof(SyncAllResponse)); try { SyncAllResponse sor = (SyncAllResponse)xml.Deserialize(webResponse.GetResponseStream()); callback.syncAllCallback(true, sor); } catch (InvalidOperationException) { callback.syncAllCallback(false, null); } } catch (WebException) { callback.syncAllCallback(false, null); return; } }
public void sync(Puzzle[] puzzles, int userid, IRestCallback cb) { if (!NetworkInterface.GetIsNetworkAvailable()) { cb.syncAllCallback(false, null); return; } lock (this) { if (webRequest != null) { cb.syncAllCallback(false, null); return; } } callback = cb; string request = String.Format(USERNAME_SERVICE + "/{0}/puzzle", userid); webRequest = (HttpWebRequest)WebRequest.Create(new Uri(request)); webRequest.Method = "POST"; IAsyncResult result = webRequest.BeginGetRequestStream(new AsyncCallback(requestSyncAllCreateStream), new SyncAllRequest(puzzles)); timer = new Timer(new TimerCallback(requestSyncAllTimeout), callback, 15 * 1000, Timeout.Infinite); }