public async Task <VisualObject> ReadAsync(CancellationToken cancellationToken)
        {
            VisualObject          visualObject = null;
            IReliableStateManager stateManager = ReliableCollectionsExtensions.GetReliableStateManager();

            if (stateManager == null)
            {
                Console.WriteLine($"Failed to get StateManager");
                return(VisualObject.CreateRandom(Guid.NewGuid().ToString()));
            }

            using (var txn = stateManager.CreateTransaction())
            {
                var visualObjectStore = await stateManager.GetOrAddAsync <IReliableDictionary <string, VisualObject> >(VISUAL_OBJECT_STORE);

                var enumerable = await visualObjectStore.CreateEnumerableAsync(txn);

                var enumerator = enumerable.GetAsyncEnumerator();

                while (await enumerator.MoveNextAsync(cancellationToken))
                {
                    visualObject = enumerator.Current.Value;
                }
                if (visualObject == null)
                {
                    Console.WriteLine($"Visual object does not exist. Creating new object.");
                    visualObject = VisualObject.CreateRandom(Guid.NewGuid().ToString());
                    await visualObjectStore.AddAsync(txn, visualObject.Name, visualObject);
                }
                await txn.CommitAsync();
            }

            return(visualObject);
        }
        public async Task WriteAsync(VisualObject state, CancellationToken cancellationToken)
        {
            IReliableStateManager stateManager = ReliableCollectionsExtensions.GetReliableStateManager();

            if (stateManager == null)
            {
                Console.WriteLine($"Failed to get StateManager");
                return;
            }

            using (var txn = stateManager.CreateTransaction())
            {
                var visualObjectStore = await stateManager.GetOrAddAsync <IReliableDictionary <string, VisualObject> >(VISUAL_OBJECT_STORE);

                await visualObjectStore.AddOrUpdateAsync(txn, state.Name, state, (k, v) => state);

                await txn.CommitAsync();
            }
        }
Beispiel #3
0
 static void Main(string[] args)
 {
     ReliableCollectionsExtensions.UseReliableCollectionsService("RCWorkerType");
     Mover.MoveAsync(new RCStateStore(), CancellationToken.None).Wait();
 }