public async Task ReadStateAsync(string grainType, GrainReference grainId, IGrainState grainState) { try { var blobName = BlobStorageProvider.GetBlobName(grainType, grainId); var blob = container.GetBlockBlobReference(blobName); var text = await blob.DownloadTextAsync(); if (string.IsNullOrWhiteSpace(text)) { return; } var data = JsonConvert.DeserializeObject(text, grainState.GetType()); var dict = ((IGrainState)data).AsDictionary(); grainState.SetAll(dict); } catch (StorageException ex) { ; } catch (Exception ex) { Log.Error(0, ex.ToString()); } }
public async Task ClearStateAsync(string grainType, GrainReference grainId, GrainState grainState) { try { var blobName = BlobStorageProvider.GetBlobName(grainType, grainId); var blob = container.GetBlockBlobReference(blobName); await blob.DeleteIfExistsAsync(); } catch (Exception ex) { Log.Error(0, ex.ToString()); } }
public async Task WriteStateAsync(string grainType, GrainReference grainId, IGrainState grainState) { try { var blobName = BlobStorageProvider.GetBlobName(grainType, grainId); var storedData = JsonConvert.SerializeObject(grainState.AsDictionary()); var blob = container.GetBlockBlobReference(blobName); await blob.UploadTextAsync(storedData); } catch (Exception ex) { Log.Error(0, ex.ToString()); } }