Esempio n. 1
0
        async Task IActorStateProvider.ReminderCallbackCompletedAsync(ActorId actorId, IActorReminder reminder, CancellationToken cancellationToken)
        {
            await this.EnsureStateProviderInitializedAsync(cancellationToken);

            var key          = CreateStorageKey(actorId, reminder.Name);
            var reminderData = new ReminderCompletedData(this.logicalTimeManager.CurrentLogicalTime, DateTime.UtcNow);
            var data         = ReminderCompletedDataSerializer.Serialize(reminderData);

            await this.stateProviderHelper.ExecuteWithRetriesAsync(
                async() =>
            {
                using (var tx = this.stateManager.CreateTransaction())
                {
                    await this.reminderCompletedDictionary.AddOrUpdateAsync(tx, key, data, (k, v) => data);
                    await tx.CommitAsync();
                }
            },
                string.Format("ReminderCallbackCompletedAsync[{0}]", actorId),
                cancellationToken);
        }
Esempio n. 2
0
        private async Task <Dictionary <string, ReminderCompletedData> > GetReminderCompletedDataMapAsync(CancellationToken cancellationToken)
        {
            var reminderCompletedDataDict = new Dictionary <string, ReminderCompletedData>();

            using (var tx = this.stateManager.CreateTransaction())
            {
                var enumerable = await this.reminderCompletedDictionary.CreateEnumerableAsync(tx);

                var enumerator = enumerable.GetAsyncEnumerator();

                while (await enumerator.MoveNextAsync(cancellationToken))
                {
                    cancellationToken.ThrowIfCancellationRequested();

                    if (enumerator.Current.Value != null)
                    {
                        var reminderCompletedData = ReminderCompletedDataSerializer.Deserialize(enumerator.Current.Value);
                        reminderCompletedDataDict.Add(enumerator.Current.Key, reminderCompletedData);
                    }
                }
            }

            return(reminderCompletedDataDict);
        }