Example #1
0
            private void workREST()
            {
                Socket socket = m_client.Client;
                while (m_bRunning)
                {
                    byte[] buffer = new byte[ReceiveBufferSize];

                    SocketError err;
                    uint totalSize = 0;
                    int rcvd = socket.Receive(buffer, 0, ReceiveBufferSize, SocketFlags.None, out err);
                    StringBuilder cmd = new StringBuilder();
                    if (rcvd > 0)
                    {
                        //do
                        {
                            if (err != SocketError.Success)
                            {
                                quit();
                                break;
                            }

                            for (int i = 0; i < rcvd; ++i)
                            {
                                cmd.Append((char)buffer[i]);
                            }
                            totalSize += (uint)rcvd;
                        }
                        while (rcvd >= ReceiveBufferSize)
                        {
                            rcvd = socket.Receive(buffer, 0, ReceiveBufferSize, SocketFlags.None, out err);
                            if (err != SocketError.Success)
                            {
                                quit();
                                break;
                            }

                            for (int i = 0; i < rcvd; ++i)
                            {
                                cmd.Append((char)buffer[i]);
                            }
                            totalSize += (uint)rcvd;
                        }
                        // TODO check if the command is really complete

                        Header h = new Header();
                        h.getTypeFromString(cmd.ToString());
                        h.length = totalSize;
                        Command command = new Command();
                        command.worker = this;
                        command.header = h;
                        command.command = cmd.ToString();
                        m_service.addCommand(command);
                    }
                }
            }