Banshee.RemoteListener.RemoteListenerService.OnReceiveRequest C# (CSharp) Method

OnReceiveRequest() private method

Triggered when received client request was read.
private OnReceiveRequest ( IAsyncResult ar ) : void
ar IAsyncResult /// Contains the client socket. ///
return void
        void OnReceiveRequest(IAsyncResult ar)
        {
            Socket client = null;
            bool isListenerAccepting = false;

            try {
                client = (Socket)ar.AsyncState;
                int readBytes = client.EndReceive(ar);

                byte [] result = null;
                string requestName = ((RequestHandler.RequestCode) Helper.Buffer[0]).ToString();

                if (Helper.ShortFromBuffer(1) == _passId) {
                    Helper.StripGlobalInfoFromBuffer(readBytes);
                    result = (byte []) typeof(RequestHandler).GetMethod(requestName).Invoke(
                        null,new object [] {readBytes - 3});
                } else if ((RequestHandler.RequestCode) Helper.Buffer[0] == RequestHandler.RequestCode.Test) {
                    result = new byte [] {0};
                }

                // we handled the request and have the data, handle other requests now
                isListenerAccepting = true;
                _listener.BeginAccept(new AsyncCallback(OnIncomingConnection), _listener);

                if (result != null && result.Length != 0) {
                    client.BeginSend(result, 0, result.Length, SocketFlags.None,
                                     OnSentResponse, client);
                }
            } catch (Exception e) {
                if (!_disposed)  {
                    if (e.InnerException == null) {
                        Log.Error("remote listener request error: ", e.Message ?? "no message");
                        Log.Error("Stack: ", e.StackTrace);
                    } else {
                        Log.Error("remote listener request error: ", e.InnerException.Message ?? "no message");
                        Log.Error("Stack: ", e.InnerException.StackTrace);
                    }

                    if (!isListenerAccepting) {
                        try {
                            // error occurred on request handle listening was not started
                            _listener.BeginAccept(new AsyncCallback(OnIncomingConnection), _listener);
                        } catch (Exception e2) {
                            Log.Error("error while starting accepting of remote listener", e2.Message);
                        }
                    }
                }
            }
        }