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 }); }
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); }
protected override byte[] SerializeEnvelope(Type argsType, SerializedEnvelope <object> envelope) { var json = JsonSerializer.Serialize(envelope, Options); return(Encoding.UTF8.GetBytes(json)); }
protected abstract byte[] SerializeEnvelope(Type argsType, SerializedEnvelope <object> envelope);