Esempio n. 1
0
        protected IEnumerable <IResponse> SendInternal(string command, Parameter[] parameter, Option[] options, Type targetType)
        {
            if (string.IsNullOrWhiteSpace(command))
            {
                throw new ArgumentNullException(nameof(command));
            }
            if (!commandMatch.IsMatch(command))
            {
                throw new ArgumentException("Invalid command characters", nameof(command));
            }

            StringBuilder strb = new StringBuilder(TS3QueryTools.Escape(command));

            foreach (var param in parameter)
            {
                strb.Append(' ').Append(param.QueryString);
            }

            foreach (var option in options)
            {
                strb.Append(option.Value);
            }

            string finalCommand = strb.ToString();

            using (WaitBlock wb = new WaitBlock(targetType))
            {
                lock (lockObj)
                {
                    requestQueue.Enqueue(wb);

                    tcpWriter.WriteLine(finalCommand);
                    tcpWriter.Flush();
                }

                return(wb.WaitForMessage());
            }
        }
Esempio n. 2
0
 public PrimitiveParameter(string value)
 {
     QueryValue = TS3QueryTools.Escape(value);
 }