public override TimerInfo Read( ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { var dueTime = default(TimeSpan); var period = default(TimeSpan); var data = default(byte[]); string callback = null; using (JsonDocument document = JsonDocument.ParseValue(ref reader)) { var json = document.RootElement.Clone(); if (json.TryGetProperty("dueTime", out var dueTimeProperty)) { var dueTimeString = dueTimeProperty.GetString(); dueTime = ConverterUtils.ConvertTimeSpanFromDaprFormat(dueTimeString); } if (json.TryGetProperty("period", out var periodProperty)) { var periodString = periodProperty.GetString(); period = ConverterUtils.ConvertTimeSpanFromDaprFormat(periodString); } if (json.TryGetProperty("data", out var dataProperty) && dataProperty.ValueKind != JsonValueKind.Null) { data = dataProperty.GetBytesFromBase64(); } if (json.TryGetProperty("callback", out var callbackProperty)) { callback = callbackProperty.GetString(); } return(new TimerInfo(callback, data, dueTime, period)); } }
internal async Task <string> SerializeAsync() { using var stream = new MemoryStream(); using Utf8JsonWriter writer = new Utf8JsonWriter(stream); writer.WriteStartObject(); if (this.DueTime != null) { writer.WriteString("dueTime", ConverterUtils.ConvertTimeSpanValueInDaprFormat(this.DueTime)); } if (this.Period != null) { writer.WriteString("period", ConverterUtils.ConvertTimeSpanValueInDaprFormat(this.Period)); } writer.WriteEndObject(); await writer.FlushAsync(); return(Encoding.UTF8.GetString(stream.ToArray())); }
internal Task SerializeSettingsAndRegisteredTypes(IBufferWriter <byte> output) { using Utf8JsonWriter writer = new Utf8JsonWriter(output); writer.WriteStartObject(); writer.WritePropertyName("entities"); writer.WriteStartArray(); foreach (var actor in this.RegisteredActors) { writer.WriteStringValue(actor.Type.ActorTypeName); } writer.WriteEndArray(); if (this.options.ActorIdleTimeout != null) { writer.WriteString("actorIdleTimeout", ConverterUtils.ConvertTimeSpanValueInDaprFormat(this.options.ActorIdleTimeout)); } if (this.options.ActorScanInterval != null) { writer.WriteString("actorScanInterval", ConverterUtils.ConvertTimeSpanValueInDaprFormat(this.options.ActorScanInterval)); } if (this.options.DrainOngoingCallTimeout != null) { writer.WriteString("drainOngoingCallTimeout", ConverterUtils.ConvertTimeSpanValueInDaprFormat(this.options.DrainOngoingCallTimeout)); } // default is false, don't write it if default if (this.options.DrainRebalancedActors != false) { writer.WriteBoolean("drainRebalancedActors", (this.options.DrainRebalancedActors)); } writer.WriteEndObject(); return(writer.FlushAsync()); }