コード例 #1
0
        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));
            }
        }
コード例 #2
0
ファイル: ActorTimer.cs プロジェクト: zheng1748/dotnet-sdk
        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()));
        }
コード例 #3
0
        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());
        }