コード例 #1
0
        private void SendCommandBase(WaitBlock wb, Ts3Command com)
        {
            lock (CommmandQueueLock)
            {
                if (com.ExpectResponse)
                {
                    var retCode = new CommandParameter("return_code", returnCode);
                    com.AppendParameter(retCode);
                    msgProc.EnqueueRequest(retCode.Value, wb);
                    returnCode++;
                }

                byte[] data = Util.Encoder.GetBytes(com.ToString());
                lock (StatusLock)
                {
                    if (wasExit)
                    {
                        throw new Ts3CommandException(new CommandError {
                            Id = Ts3ErrorCode.custom_error, Message = "Connection closed"
                        });
                    }
                    packetHandler.AddOutgoingPacket(data, PacketType.Command);
                }
            }
        }
コード例 #2
0
ファイル: Ts3QueryClient.cs プロジェクト: Najsr/TS3Slim
        protected override IEnumerable <T> SendCommand <T>(Ts3Command com)       // Synchronous
        {
            using (var wb = new WaitBlock())
            {
                lock (SendQueueLock)
                {
                    msgProc.EnqueueRequest(wb);
                    SendRaw(com.ToString());
                }

                return(wb.WaitForMessage <T>());
            }
        }
コード例 #3
0
        public override R <T[], CommandError> Send <T>(Ts3Command com)       // Synchronous
        {
            using (var wb = new WaitBlock(msgProc.Deserializer, false))
            {
                lock (sendQueueLock)
                {
                    msgProc.EnqueueRequest(wb);
                    SendRaw(com.ToString());
                }

                return(wb.WaitForMessage <T>());
            }
        }
コード例 #4
0
        private E <CommandError> SendCommandBase(WaitBlock wb, Ts3Command com)
        {
            if (context.WasExit || com.ExpectResponse)
            {
                return(Util.TimeOutCommandError);
            }

            var message = com.ToString();

            byte[] data = Util.Encoder.GetBytes(message);
            packetHandler.AddOutgoingPacket(data, PacketType.Command);
            return(R.Ok);
        }
コード例 #5
0
        protected override IEnumerable <T> SendCommand <T>(Ts3Command com)
        {
            var retCode = new CommandParameter("return_code", returnCode);

            if (com.ExpectResponse)
            {
                com.AppendParameter(retCode);
            }

            using (var wb = new WaitBlock())
            {
                lock (CommmandQueueLock)
                {
                    if (com.ExpectResponse)
                    {
                        msgProc.EnqueueRequest(retCode.Value, wb);
                        returnCode++;
                    }

                    byte[] data = Util.Encoder.GetBytes(com.ToString());
                    lock (StatusLock)
                    {
                        if (wasExit)
                        {
                            throw new Ts3CommandException(new CommandError {
                                Id = Ts3ErrorCode.custom_error, Message = "Connection closed"
                            });
                        }
                        packetHandler.AddOutgoingPacket(data, PacketType.Command);
                    }
                }

                if (com.ExpectResponse)
                {
                    return(wb.WaitForMessage <T>());
                }
                else
                {
                    return(null);
                }
            }
        }
コード例 #6
0
        private void SendCommandBase(WaitBlock wb, Ts3Command com)
        {
            lock (statusLock)
            {
                if (context.WasExit || (!Connected && com.ExpectResponse))
                {
                    throw new Ts3CommandException(Util.TimeOutCommandError);
                }

                if (com.ExpectResponse)
                {
                    var responseNumber   = ++returnCode;
                    var retCodeParameter = new CommandParameter("return_code", responseNumber);
                    com.AppendParameter(retCodeParameter);
                    msgProc.EnqueueRequest(retCodeParameter.Value, wb);
                }

                byte[] data = Util.Encoder.GetBytes(com.ToString());
                packetHandler.AddOutgoingPacket(data, PacketType.Command);
            }
        }
コード例 #7
0
ファイル: Ts3FullClient.cs プロジェクト: sertsch1/TS3AudioBot
        private E <CommandError> SendCommandBase(WaitBlock wb, Ts3Command com)
        {
            lock (statusLock)
            {
                if (context.WasExit || (!Connected && com.ExpectResponse))
                {
                    return(Util.TimeOutCommandError);
                }

                if (com.ExpectResponse)
                {
                    var responseNumber   = ++returnCode;
                    var retCodeParameter = new CommandParameter("return_code", responseNumber);
                    com.AppendParameter(retCodeParameter);
                    msgProc.EnqueueRequest(retCodeParameter.Value, wb);
                }

                var message = com.ToString();
                LogCmd.Debug("[O] {0}", message);
                byte[] data = Util.Encoder.GetBytes(message);
                packetHandler.AddOutgoingPacket(data, PacketType.Command);
            }
            return(E <CommandError> .OkR);
        }