public Response GetResponse(Request request) { if (request == null) { throw new ArgumentNullException("request"); } if (!this.Connected) { throw new InvalidOperationException("Not connected."); } Transceiver transceiver = new Transceiver(this.client); transceiver.SendProgressChanged += new ProgressHandler(this.OnRequestProgressChanged); transceiver.ReceiveProgressChanged += new ProgressHandler(this.OnResponseProgressChanged); transceiver.SendRequest(request); Response response = transceiver.ReceiveResponse(); transceiver.SendProgressChanged -= new ProgressHandler(this.OnRequestProgressChanged); transceiver.ReceiveProgressChanged -= new ProgressHandler(this.OnResponseProgressChanged); return(response); }
private void Processing(object parameter) { ClientState state = (ClientState)parameter; try { bool flag; Transceiver transceiver = new Transceiver(state.Client); do { Request request = transceiver.ReceiveRequest(); Response response = this.ProcessRequest(state.Id, (IPEndPoint)state.Client.RemoteEndPoint, request, out flag); transceiver.SendResponse(response); }while (!flag); } catch (ThreadAbortException) { return; } catch (Exception) { } this.CloseClient(state.Client); }