Esempio n. 1
0
        /// <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;
            }
        }
Esempio n. 2
0
        /// <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;
            }
        }