namespace marlin.core.contracts; using System.Runtime.Serialization; using System.ServiceModel; using models; using ProtoBuf.Grpc; [ServiceContract] public interface IInstanceService { [OperationContract] Task SendLogEvent(LogEventRequest request, CallContext context = default); [OperationContract] Task SendStatusUpdate(StatusUpdateRequest request, CallContext context = default); } [DataContract] public class LogEventRequest { [DataMember(Order = 1)] public DateTime At { get => field; set => field = DateTime.SpecifyKind(value, DateTimeKind.Utc); } [DataMember(Order = 2)] public string Message { get; set; } [DataMember(Order = 3)] public bool Error { get; set; } [DataMember(Order = 4)] public string StepId { get; set; } } [DataContract] public class StatusUpdateRequest { [DataMember(Order = 1)] public JobStatus Status { get; set; } }