/// <summary>
        /// Reaction on something received
        /// </summary>
        /// <param name="instance">The instance.</param>
        /// <param name="args">The <see cref="aceRemoteInstanceBaseEventArgs"/> instance containing the event data.</param>
        public void received(aceRemoteInstanceBase instance, aceRemoteInstanceBaseEventArgs args)
        {
            string ip = args.socket.RemoteEndPoint.ToString();

            log("Received [" + ip.ToString() + "]: " + args.message);

            string msg = args.message.Trim();

            if (msg.Length > 4)
            {
                string cmd = msg.Substring(0, 3).ToUpper();
                string par = msg.Substring(4).Trim();

                switch (cmd)
                {
                case "RND":
                    if (string.IsNullOrWhiteSpace(par))
                    {
                        par = "5";
                    }
                    int    _rndTimes = int.Parse(par);
                    Random random    = new Random();
                    for (int ri = 0; ri < _rndTimes; ri++)
                    {
                        string rnd = imbSCI.Core.extensions.text.imbStringGenerators.getRandomString(32);     //aceCommonExtensions.getRandomString(32);

                        int rnt = random.Next(10) * 200;

                        sendStack.Enqueue(new aceRemoteSendTask(rnd, rnt, args.socket));
                    }
                    break;

                case "ECH":
                    if (string.IsNullOrWhiteSpace(par))
                    {
                        par = "[echo]";
                    }
                    sendStack.Enqueue(new aceRemoteSendTask(par, 0, args.socket));
                    break;

                case "PNG":
                    if (string.IsNullOrWhiteSpace(par))
                    {
                        par = "5";
                    }

                    int _pngTimes = int.Parse(par);
                    for (int pi = 0; pi < _pngTimes; pi++)
                    {
                        sendStack.Enqueue(new aceRemoteSendTask("ping [" + pi.ToString("D3") + "/" + _pngTimes + "]", 200, args.socket));
                    }
                    break;

                default:
                    log("Unknown command [" + msg + "]");
                    break;
                }
            }
        }
        protected void processStackLoop()
        {
            while (doProcessStackLoop)
            {
                byte[]        rb       = new byte[settings.bufferSize];
                SocketError   erc      = SocketError.Success;
                StringBuilder sb       = new StringBuilder();
                bool          doRepeat = true;
                Socket        socket   = client;
                while (doRepeat)
                {
                    try
                    {
                        int brc = socket.Receive(rb, 0, settings.bufferSize, 0, out erc);
                        if (brc > 0)
                        {
                            sb.Append(Encoding.ASCII.GetString(rb, 0, brc));
                            rb = new byte[settings.bufferSize];
                        }
                        else
                        {
                            doRepeat = false;
                        }
                    } catch (Exception ex)
                    {
                        log("Receive exception:" + ex.Message);
                    }
                }

                string inputData = sb.ToString().Trim();

                // deljenje u vise linija
                if (!string.IsNullOrEmpty(inputData))
                {
                    if (inputData.Contains(settings.endMessageSufix))
                    {
                        var lns = inputData.Split(settings.endMessageSufix.ToCharArray(),
                                                  StringSplitOptions.RemoveEmptyEntries);
                        foreach (string ln in lns)
                        {
                            readStack.Enqueue(new aceRemoteReceiveMessage(ln, socket));
                        }
                    }
                    else
                    {
                        readStack.Enqueue(new aceRemoteReceiveMessage(inputData, socket));
                    }
                }

                if (!readStack.IsEmpty)
                {
                    aceRemoteReceiveMessage st;
                    bool poped = readStack.TryDequeue(out st);
                    if (poped)
                    {
                        if (onClientReceived != null)
                        {
                            aceRemoteInstanceBaseEventArgs args = new aceRemoteInstanceBaseEventArgs(aceRemoteInstanceBaseEventType.clientReceive, st.message, st.socket);
                            onClientReceived(this, args);
                        }
                        else
                        {
                            log("Processing not attached :: " + st.message);
                        }

                        poped = false;
                    }
                }
                Thread.Sleep(1);
            }
        }
 public void sending(aceRemoteInstanceBase instance, aceRemoteInstanceBaseEventArgs args)
 {
     log("-- sending[" + args.socket.RemoteEndPoint.ToString() + "] :: " + args.message);
 }