internal DVRTunnelReceivePacket <T> SendAndReceiveData <T>(DVRTunnelPacket data) where T : DAbstract { DVRTunnelReceivePacket <T> result = null; this.SendData(data); // unpack VRClientPacket result = this.ReveiveData <DVRClientPacket <DVRTunnelReceivePacket <T> > >().data; return(result); }
private T SendAndReceiveData <T>(DVRClientPacket <DAbstract> sendPacket) where T : DAbstract { if (!this.client.IsConnected) { throw new InvalidOperationException("Not connected! Please connect to the server first"); } T result = default(T); DVRTunnelReceivePacket <T> receivePacket = client.SendAndReceiveData <T>(new DVRTunnelPacket() { dest = this.tunnelId, data = sendPacket }); // create Tunnel Packet // unpack tunnel receive packet if (receivePacket.status != "error") { result = receivePacket.data; } else { throw new VRClientException(receivePacket.msg); } if (result is DVRClientReceivePacket) { if ((result as DVRClientReceivePacket)?.id == "callback") { throw new VRCallbackException("Invalid package"); } } //else if (result is DVRClientPacketArrayResponse<>) //{ // if ((result as DVRClientPacketArrayResponse<>)?.id == "callback") // { // throw new VRCallbackException("Invalid package"); // } //} return(result); }