using InABox.Core; using InABox.Rpc; namespace PRSServices; public enum PortState { Unavailable, Available, Secure, } public enum PortType { None, Database, Session, Web, GPS, Sigfox, Certificate } public class PortStatus { public int Port { get; set; } public PortType Type { get; set; } public PortState State { get; set; } public PortStatus(int port, PortType type, PortState state) { Port = port; Type = type; State = state; } public PortStatus() { Port = 0; Type = PortType.None; State = PortState.Unavailable; } } //public class PortStatus[] : List { } public class PortStatusCommand : IRpcCommand { public bool Log => false; } public class PortStatusParameters : IRpcCommandParameters { public void SerializeBinary(CoreBinaryWriter writer) {throw new System.NotImplementedException(); } public void DeserializeBinary(CoreBinaryReader reader) { throw new System.NotImplementedException(); } public string? FullDescription() => null; public string? ShortDescription() => null; } public class PortStatusResult : IRpcCommandResult { public PortStatus[] Ports { get; set; } public PortStatusResult() { Ports = new PortStatus[] { }; } public void SerializeBinary(CoreBinaryWriter writer) { writer.WriteBinaryValue(Ports); } public void DeserializeBinary(CoreBinaryReader reader) { Ports = reader.ReadBinaryValue(); } public string? FullDescription() => null; } public class PortStatusHandler : RpcCommandHandler { protected override PortStatusResult Execute(IRpcSession session, PortStatusParameters? parameters) => new() { Ports = Sender.PortStatusList() }; public PortStatusHandler(IEngine sender) : base(sender) { } }