/// <summary> /// Process user details based on timing. /// </summary> /// <param name="userDetailsBag">User details bag</param> /// <param name="elapsedTimeInSeconds">Time elapsed in seconds</param> /// <param name="waitTimeInSeconds">Wait time in seconds</param> /// <param name="cancellationToken">Cancellation token</param> /// <returns>Task</returns> private async Task ProcessUserDetailsBasedOnTiming(UserDetailsBag userDetailsBag, double elapsedTimeInSeconds, double waitTimeInSeconds, CancellationToken cancellationToken) { if (elapsedTimeInSeconds >= waitTimeInSeconds && userDetailsBag.UserDetailsCollection.Count > 0) { await this.ProcessMessage(userDetailsBag.UserDetailsCollection, cancellationToken); userDetailsBag.UserDetailsCollection.Clear(); userDetailsBag.BatchStartTime = DateTime.UtcNow; } }
/// <summary> /// Process msg. /// </summary> /// <param name="userDetailsBag">User details bag</param> /// <param name="userDetails">Newly arrived user details</param> /// <param name="cancellationToken">Cancellation token</param> /// <returns>Task</returns> private async Task ProcessMsg(UserDetailsBag userDetailsBag, UserDetails userDetails, CancellationToken cancellationToken) { if ((DateTime.UtcNow - userDetailsBag.BatchStartTime).TotalSeconds <= this.votingDatabaseParameters.WaitTimeinSeconds.Seconds && userDetailsBag.UserDetailsCollection.Count < this.votingDatabaseParameters.SampleBatchSize && !userDetailsBag.UserDetailsCollection.Any(ud => ud.AadharNo.Equals(userDetails.AadharNo))) { userDetailsBag.UserDetailsCollection.Add(userDetails); } else { await this.ProcessMessage(userDetailsBag.UserDetailsCollection, cancellationToken); userDetailsBag.UserDetailsCollection.Clear(); userDetailsBag.UserDetailsCollection.Add(userDetails); userDetailsBag.BatchStartTime = DateTime.UtcNow; } }