Пример #1
0
        private static JobInfo ToJobInfo <T>(SerializedEnvelope <T> serialized, string argsTag, IJobTypeProvider typeProvider)
        {
            var argsType = typeProvider.TagToType(argsTag);
            var jobType  = typeProvider.TagToType(serialized.J);

            return(new JobInfo
            {
                JobType = jobType,
                ArgsType = argsType,
                Args = serialized.A,
                Err = serialized.E,
                RunAtUtc = serialized.At,
                Retries = serialized.R,
                TimeoutMs = serialized.T,
                GroupKey = serialized.G,
                PeriodicRunInfo = serialized.P
            });
        }
Пример #2
0
        protected override byte[] SerializeEnvelope(Type argsType, SerializedEnvelope <object> envelope)
        {
            var objectProps = new List <byte[]>();

            var size = 0;

            size += Serialize(envelope.J, objectProps);
            size += Serialize(envelope.At, objectProps);
            size += Serialize(envelope.R, objectProps);
            size += Serialize(envelope.T, objectProps);
            size += Serialize(envelope.G, objectProps);

            size += Serialize(envelope.P?.RepeatSeconds, objectProps);
            size += Serialize(envelope.P?.NextRunTime, objectProps);
            size += Serialize(envelope.P?.LastRunTimeUtc, objectProps);
            size += Serialize(envelope.P?.EndAtUtc, objectProps);
            size += Serialize(envelope.P?.CronExp, objectProps);
            size += Serialize(envelope.P?.TzId, objectProps);

            var headerSize = size + 4;

            size += SerializeObject(argsType, envelope.A, objectProps);

            var result = new byte[size + 4];

            BitConverter.GetBytes(headerSize).CopyTo(result, 0);

            var nextIndex = 4;

            foreach (var prop in objectProps)
            {
                prop.CopyTo(result, nextIndex);
                nextIndex += prop.Length;
            }

            return(result);
        }
Пример #3
0
        protected override byte[] SerializeEnvelope(Type argsType, SerializedEnvelope <object> envelope)
        {
            var json = JsonSerializer.Serialize(envelope, Options);

            return(Encoding.UTF8.GetBytes(json));
        }
Пример #4
0
 protected abstract byte[] SerializeEnvelope(Type argsType, SerializedEnvelope <object> envelope);