Example #1
0
        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);
        }
Example #2
0
        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);
        }