Exemplo n.º 1
0
        public static void ReadCallback(IAsyncResult ar)
        {
            String content = String.Empty;

            // Retrieve the state object and the handler socket
            // from the asynchronous state object.
            StateObject state   = (StateObject)ar.AsyncState;
            Socket      handler = state.workSocket;

            // Read data from the client socket.
            int bytesRead = handler.EndReceive(ar);

            if (bytesRead > 0)
            {
                // There  might be more data, so store the data received so far.
                state.sb.Append(Encoding.ASCII.GetString(
                                    state.buffer, 0, bytesRead));

                // Check for end-of-file tag. If it is not there, read
                // more data.
                content = state.sb.ToString();
                if (content.IndexOf("<EOF>") > -1)
                {
                    // All the data has been read from the
                    // client. Display it on the console.
                    Console.WriteLine("Read {0} bytes from socket. \n Data : {1}",
                                      content.Length, content);

                    // Process protocol and call methods.
                    string[] protocol = content.Split('|');
                    switch (protocol[0])
                    {
                    case "Connect":
                        Send(handler, "OK");
                        break;

                    case "CarSave":
                        carController.Save();
                        Send(handler, "OK");
                        break;

                    case "CarCreate":
                        carController.Create(protocol[1]);
                        Send(handler, "OK");
                        break;

                    case "CarEdit":
                        carController.Edit(protocol[1], protocol[2]);
                        Send(handler, "OK");
                        break;

                    case "CarRemove":
                        carController.Remove(protocol[1]);
                        Send(handler, "OK");
                        break;

                    case "CarGet":
                        Send(handler, carController.Get(Int32.Parse(protocol[1]), Int32.Parse(protocol[2])));
                        break;

                    case "CarSearch":
                        Send(handler, carController.Search(protocol[1], Int32.Parse(protocol[2]), Int32.Parse(protocol[3])));
                        break;

                    case "CarIndex":
                        Send(handler, carController.Index(protocol[1]));
                        break;

                    case "JobSave":
                        jobController.Save();
                        Send(handler, "OK");
                        break;

                    case "JobCreate":
                        jobController.Create(protocol[1]);
                        Send(handler, "OK");
                        break;

                    case "JobEdit":
                        jobController.Edit(protocol[1], protocol[2]);
                        Send(handler, "OK");
                        break;

                    case "JobRemove":
                        jobController.Remove(protocol[1]);
                        Send(handler, "OK");
                        break;

                    case "JobGet":
                        Send(handler, jobController.Get(Int32.Parse(protocol[1]), Int32.Parse(protocol[2]), Int32.Parse(protocol[3])));
                        break;

                    case "JobSearch":
                        Send(handler, jobController.Search(protocol[1], Int32.Parse(protocol[2]), Int32.Parse(protocol[3]), Int32.Parse(protocol[4])));
                        break;

                    default:
                        Send(handler, "ERROR");
                        break;
                    }
                }
                else
                {
                    // Not all data received. Get more.
                    handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
                                         new AsyncCallback(ReadCallback), state);
                }
            }
        }