private async void HandleDownloadedData(object sender, DownloadDataResponse e) { if (_disposed) { return; } await HandleDownloadedData(e); OnDataDownloaded(); }
internal static void HandleDataChanges <TUser>(object sender, UpdatedDataBatch updatedDataBatch) { var hubContext = GlobalHost.ConnectionManager.GetConnectionContext <RealmiusPersistentConnection <TUser> >(); foreach (var item in updatedDataBatch.Items) { var download = new DownloadDataResponse(); download.ChangedObjects.Add(item.DownloadResponseItem); var date = DateTimeOffset.UtcNow; var tags = new List <string> { item.Tag0, item.Tag1, item.Tag2, item.Tag3 }; download.LastChange = tags.Where(x => x != null).Distinct().ToDictionary(x => x, x => date); var msg = RealmiusPersistentConnection <TUser> .Serialize(download); hubContext.Groups.Send(tags, $"{MethodConstants.ClientDataDownloaded}{msg}"); } }
private async Task HandleDownloadedData(DownloadDataResponse result) { Logger.Info($"HandleDownloadedData: {result?.LastChange}"); lock (_handleDownloadDataLock) { try { var realmLocal = _realmFactoryMethod(); var realmius = CreateRealmius(); realmius.Refresh(); realmLocal.Refresh(); var changedObjects = result.ChangedObjects.ToList(); StoreChangedObjects(changedObjects, realmius, realmLocal); //if (result.ChangedObjects.Any()) { var syncOptions = realmius.Find <SyncConfiguration>(1); foreach (KeyValuePair <string, DateTimeOffset> dateTimeOffset in result.LastChange) { if (result.LastChangeContainsNewTags || syncOptions.LastDownloadedTags.ContainsKey(dateTimeOffset.Key)) { syncOptions.LastDownloadedTags[dateTimeOffset.Key] = dateTimeOffset.Value; } } realmius.Write(() => { syncOptions.SaveLastDownloadedTags(); }); _apiClient.UpdateOptions(GetOptions(syncOptions)); } } catch (Exception ex) { Logger.Info("HandleDownloadedData"); Logger.Exception(ex); } } }
/// <summary> /// Obtain a copy of the current documents specified by the signatureRequestId parameter. /// If the files are currently being prepared, a status code of 409 will be returned instead. /// </summary> /// <param name="signatureRequestId">The id of the SignatureRequest to retrieve.</param> /// <param name="fileType">Set to <see cref="FileType.Pdf" /> for a single merged document or /// <see cref="FileType.Zip" /> for a collection of individual documents.</param> /// <returns></returns> /// <exception cref="ArgumentException">Signature request id is required.</exception> public Task <DownloadDataResponse> GetFilesAsync(string signatureRequestId, FileType fileType) { if (string.IsNullOrEmpty(signatureRequestId)) { throw new ArgumentException("Signature request id is required."); } var ft = fileType == FileType.Zip ? "zip" : "pdf"; var url = $"{SignatureUrl}/files/{signatureRequestId}?file_type={ft}"; _log.Requesting("GET", url); var resp = _client.GetAsync(url) .ContinueWith(t => { var apiR = new DownloadDataResponse(); apiR.FillExtraValues(t.Result); apiR.FileResponse = t.Result; return(apiR); }); return(resp); }
public static void AddUserGroup(Func <TUser, bool> userPredicate, string group) { var connectionIds = Connections.Where(x => userPredicate(x.Value)); var connection = GlobalHost.ConnectionManager.GetConnectionContext <RealmiusPersistentConnection <TUser> >(); foreach (KeyValuePair <string, TUser> connectionId in connectionIds) { connection.Groups.Add(connectionId.Key, group); var tags = ProcessorStatic.GetTagsForUser(connectionId.Value); if (tags.Contains(group)) { continue; } tags.Add(group); //include data for the tag var changes = ProcessorStatic.Download(new DownloadDataRequest() { LastChangeTime = new Dictionary <string, DateTimeOffset>() { { group, DateTimeOffset.MinValue } }, Types = ProcessorStatic.Configuration.TypesToSync.Select(x => x.Name), OnlyDownloadSpecifiedTags = true, }, connectionId.Value); var downloadData = new DownloadDataResponse() { ChangedObjects = changes.ChangedObjects, LastChange = new Dictionary <string, DateTimeOffset>() { { group, DateTimeOffset.UtcNow } }, LastChangeContainsNewTags = true, }; connection.Connection.Send(connectionId.Key, MethodConstants.ClientDataDownloaded + Serialize(downloadData)); } }
protected virtual void OnNewDataDownloaded(DownloadDataResponse e) { NewDataDownloaded?.Invoke(this, e); }
/// <summary> /// 拉取排行榜信息 /// </summary> /// <param name="form"></param> /// <param name="OnSucceed"></param> /// <returns></returns> public IEnumerator DownloadRecord(CategoryInstance instance, Action <ArrayList> OnSucceed, Action <string> OnFail) { if (!CanRefreshRankData(instance)) { List <RankInstance> instances; rankDataDict.TryGetValue(instance, out instances); if (instances != null && instances.Count > 0) { if (OnSucceed != null) { ArrayList dataList = new ArrayList(instances); OnSucceed(dataList); } } else { if (OnFail != null) { string msg = LanguageController.Instance.GetLanguage("Text_20071"); OnFail(msg); } } yield break; } WWWForm form = new WWWForm(); form.AddField("userId", GameManager.Instance.UserID); form.AddField("jwttoken", GameManager.Instance.Token); form.AddField("model", (int)instance.patternID + 1); form.AddField("num", (int)instance.amountID + 1); form.AddField("calcu", (int)instance.symbolID + 1); form.AddField("digit", (int)instance.digitID + 2); form.AddField("operate", (int)instance.operandID + 2); WWW www = new WWW(DownloadURL, form); float responseTime = 0; while (!www.isDone && responseTime < TimeOut) { responseTime += Time.deltaTime; yield return(www); } string message = ""; if (www.isDone) { DownloadDataResponse response = JsonUtility.FromJson <DownloadDataResponse>(www.text); if (response != null) { if (response.code == (int)CodeID.SUCCESS) { MyDebug.LogGreen("Download Rank Data Succeed!"); lastRefreshTimeDict[instance] = DateTime.Now; if (response.data != null && response.data.Count > 0) { rankDataDict[instance] = response.data; if (OnSucceed != null) { ArrayList dataList = new ArrayList(response.data); OnSucceed(dataList); } yield break; } else { message = LanguageController.Instance.GetLanguage("Text_20071"); } } else if (response.code == (int)CodeID.GAME_VERSION_ERROR) { MyDebug.LogYellow("Download Rank Data Fail:" + response.code); message = LanguageController.Instance.GetLanguage("Text_20079"); } else { MyDebug.LogYellow("Download Rank Data Fail:" + response.code); message = LanguageController.Instance.GetLanguage("Text_20066"); } } else { MyDebug.LogYellow("Download Rank Data Fail: Message Is Not Response!"); message = LanguageController.Instance.GetLanguage("Text_20066"); } } else { MyDebug.LogYellow("Download Rank Data Fail: Long Time!"); message = LanguageController.Instance.GetLanguage("Text_20067"); } if (OnFail != null) { OnFail(message); } }
protected virtual void OnNewDataDownloaded(DownloadDataResponse e) { Logger.Info("OnNewDataDownloaded"); NewDataDownloaded?.Invoke(this, e); }
private void CallDataDownloaded(string connectionId, DownloadDataResponse data) { Send(connectionId, MethodConstants.ClientDataDownloaded, data); }