async Task IStorageProvider.WriteStateAsync(Type grainType, GrainReference grainReference, GrainState grainState) { if (_ignore) return; var grainIdentity = GrainIdentity.FromGrainReference(grainType.FullName, grainReference); await _dataManager.UpsertStateAsync(grainIdentity, grainState.AsDictionary()); }
/// <summary> /// Serializes from a grain instance to a JSON document. /// </summary> /// <param name="grainState">Grain state to be converted into JSON storage format.</param> /// <remarks> /// See: /// http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx /// for more on the JSON serializer. /// </remarks> protected static string ConvertToStorageFormat(GrainState grainState) { IDictionary<string, object> dataValues = grainState.AsDictionary(); JavaScriptSerializer serializer = new JavaScriptSerializer(); return serializer.Serialize(dataValues); }
public virtual Task WriteStateAsync(string grainType, GrainReference grainReference, GrainState grainState) { Log.Info(0, "WriteStateAsync for {0} {1}", grainType, grainReference); Interlocked.Increment(ref writeCount); lock (StateStore) { var storedState = grainState.AsDictionary(); // Store current state data StateStore.WriteRow(MakeGrainStateKeys(grainType, grainReference), storedState, grainState.Etag); LastId = GetId(grainReference); LastState = storedState; } return TaskDone.Done; }