public async Task <Switch> GetSwitchAsync(GetSwitchRequest request, DateTime?deadline) { if (request is null) { throw new ArgumentNullException(nameof(request)); } PlcFrame response = await this.InvokeAsync( PlcFrame.Create(PlcMessageType.GetSwitchRequest, ByteString.Empty), deadline) .ConfigureAwait(false); if (response.FrameHeader.MessageType != PlcMessageType.GetSwitchResponse) { throw new InvalidDataException( "Response message type mismatch: " + response.FrameHeader.MessageType); } using var reader = new BinaryReader(new MemoryStream(response.FrameBody.ToByteArray())); return(new Switch { DevicePowerOn = reader.ReadByte() != 0, ExhausterPowerOn = reader.ReadByte() != 0, HeaterAutoOn = reader.ReadByte() != 0, HeaterPowerOn = reader.ReadByte() != 0, HeaterFanOn = reader.ReadByte() != 0, HeaterCompressorOn = reader.ReadByte() != 0, HeaterFourWayReversingOn = reader.ReadByte() != 0, }); }
public override Task <Switch> GetSwitch(GetSwitchRequest request, ServerCallContext context) { return(this.Invoke( (client, request, deadline) => client.GetSwitchAsync(request, deadline), request.DeviceId, request, context)); }
public override AsyncUnaryCall <Switch> GetSwitchAsync(GetSwitchRequest request, Metadata headers = null, DateTime?deadline = null, CancellationToken cancellationToken = default) { Switch switchInfo = Switches[request.DeviceId]; return(TestCalls.AsyncUnaryCall( Task.FromResult(switchInfo.Clone()), Task.FromResult(new Metadata()), () => Status.DefaultSuccess, () => new Metadata(), () => { })); }