private void PopulateListUpdatesAsync(string datasetName, long lastSyncCount, List <Record> records, string nextToken, AmazonCognitoSyncCallback <DatasetUpdates> callback, AsyncOptions options) { ListRecordsRequest request = new ListRecordsRequest(); request.IdentityPoolId = identityPoolId; request.IdentityId = this.GetCurrentIdentityId(); request.DatasetName = datasetName; request.LastSyncCount = lastSyncCount; // mark it large enough to reduce # of requests request.MaxResults = 1024; request.NextToken = nextToken; client.ListRecordsAsync(request, (responseObj) => { ListRecordsResponse res = responseObj.Response; Exception ex = responseObj.Exception; object obj = responseObj.state; if (ex != null) { InternalSDKUtils.AsyncExecutor(() => callback(new AmazonCognitoSyncResult <DatasetUpdates>(null, ex, obj)), options);; } else { ListRecordsResponse listRecordsResponse = res; foreach (Amazon.CognitoSync.Model.Record remoteRecord in listRecordsResponse.Records) { //builder.addRecord(modelToRecord(remoteRecord)); records.Add(this.ModelToRecord(remoteRecord)); } if (listRecordsResponse.NextToken == null) { DatasetUpdates updates = new DatasetUpdates( datasetName, records, listRecordsResponse.DatasetSyncCount, listRecordsResponse.SyncSessionToken, listRecordsResponse.DatasetExists, listRecordsResponse.DatasetDeletedAfterRequestedSyncCount, listRecordsResponse.MergedDatasetNames ); InternalSDKUtils.AsyncExecutor(() => callback(new AmazonCognitoSyncResult <DatasetUpdates>(updates, ex, obj)), options); return; } // update last evaluated key nextToken = listRecordsResponse.NextToken; // emulating the while loop PopulateListUpdatesAsync(datasetName, lastSyncCount, records, nextToken, callback, new AsyncOptions() { ExecuteCallbackOnMainThread = false, State = obj }); } }, options); }
private void PopulateListUpdates(string datasetName, long lastSyncCount, List <Record> records, string nextToken, AmazonCognitoCallback callback, object state) { { ListRecordsRequest request = new ListRecordsRequest(); //appendUserAgent(request, userAgent); request.IdentityPoolId = identityPoolId; request.IdentityId = this.GetCurrentIdentityId(); request.DatasetName = datasetName; request.LastSyncCount = lastSyncCount; // mark it large enough to reduce # of requests request.MaxResults = 1024; request.NextToken = nextToken; client.ListRecordsAsync(request, delegate(AmazonServiceResult result) { if (result.Exception != null) { AmazonMainThreadDispatcher.ExecCallback(callback, new AmazonCognitoResult(null, HandleException(result.Exception, "Failed to list records in dataset: " + datasetName), state)); return; } ListRecordsResponse listRecordsResponse = result.Response as ListRecordsResponse; foreach (Amazon.CognitoSync.Model.Record remoteRecord in listRecordsResponse.Records) { //builder.addRecord(modelToRecord(remoteRecord)); records.Add(this.ModelToRecord(remoteRecord)); } if (listRecordsResponse.NextToken == null) { DatasetUpdatesImpl updates = new DatasetUpdatesImpl( datasetName, records, listRecordsResponse.DatasetSyncCount, listRecordsResponse.SyncSessionToken, listRecordsResponse.DatasetExists, listRecordsResponse.DatasetDeletedAfterRequestedSyncCount, listRecordsResponse.MergedDatasetNames ); ListUpdatesResponse listUpdatesResponse = new ListUpdatesResponse { DatasetUpdates = updates }; AmazonMainThreadDispatcher.ExecCallback(callback, new AmazonCognitoResult(listUpdatesResponse, null, state)); return; } // update last evaluated key nextToken = listRecordsResponse.NextToken; // emulating the while loop PopulateListUpdates(datasetName, lastSyncCount, records, nextToken, callback, state); }, state); } }
private DatasetUpdates PopulateListUpdates(string datasetName, long lastSyncCount, List <Record> records, string nextToken) { ListRecordsRequest request = new ListRecordsRequest(); request.IdentityPoolId = identityPoolId; request.IdentityId = this.GetCurrentIdentityId(); request.DatasetName = datasetName; request.LastSyncCount = lastSyncCount; // mark it large enough to reduce # of requests request.MaxResults = 1024; request.NextToken = nextToken; ListRecordsResponse listRecordsResponse = client.ListRecords(request); foreach (Amazon.CognitoSync.Model.Record remoteRecord in listRecordsResponse.Records) { records.Add(ModelToRecord(remoteRecord)); } if (listRecordsResponse.NextToken != null) { // update last evaluated key nextToken = listRecordsResponse.NextToken; PopulateListUpdates(datasetName, lastSyncCount, records, nextToken); } DatasetUpdates updates = new DatasetUpdates( datasetName, records, listRecordsResponse.DatasetSyncCount, listRecordsResponse.SyncSessionToken, listRecordsResponse.DatasetExists, listRecordsResponse.DatasetDeletedAfterRequestedSyncCount, listRecordsResponse.MergedDatasetNames ); return(updates); }
/// <summary> /// Unmarshaller the response from the service to the response class. /// </summary> /// <param name="context"></param> /// <returns></returns> public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context) { ListRecordsResponse response = new ListRecordsResponse(); context.Read(); int targetDepth = context.CurrentDepth; while (context.ReadAtDepth(targetDepth)) { if (context.TestExpression("Count", targetDepth)) { var unmarshaller = IntUnmarshaller.Instance; response.Count = unmarshaller.Unmarshall(context); continue; } if (context.TestExpression("DatasetDeletedAfterRequestedSyncCount", targetDepth)) { var unmarshaller = BoolUnmarshaller.Instance; response.DatasetDeletedAfterRequestedSyncCount = unmarshaller.Unmarshall(context); continue; } if (context.TestExpression("DatasetExists", targetDepth)) { var unmarshaller = BoolUnmarshaller.Instance; response.DatasetExists = unmarshaller.Unmarshall(context); continue; } if (context.TestExpression("DatasetSyncCount", targetDepth)) { var unmarshaller = LongUnmarshaller.Instance; response.DatasetSyncCount = unmarshaller.Unmarshall(context); continue; } if (context.TestExpression("LastModifiedBy", targetDepth)) { var unmarshaller = StringUnmarshaller.Instance; response.LastModifiedBy = unmarshaller.Unmarshall(context); continue; } if (context.TestExpression("MergedDatasetNames", targetDepth)) { var unmarshaller = new ListUnmarshaller <string, StringUnmarshaller>(StringUnmarshaller.Instance); response.MergedDatasetNames = unmarshaller.Unmarshall(context); continue; } if (context.TestExpression("NextToken", targetDepth)) { var unmarshaller = StringUnmarshaller.Instance; response.NextToken = unmarshaller.Unmarshall(context); continue; } if (context.TestExpression("Records", targetDepth)) { var unmarshaller = new ListUnmarshaller <Record, RecordUnmarshaller>(RecordUnmarshaller.Instance); response.Records = unmarshaller.Unmarshall(context); continue; } if (context.TestExpression("SyncSessionToken", targetDepth)) { var unmarshaller = StringUnmarshaller.Instance; response.SyncSessionToken = unmarshaller.Unmarshall(context); continue; } } return(response); }