BlipFace.Service.Communication.BlipCommunication.AfterUserMainStatus C# (CSharp) Метод

AfterUserMainStatus() приватный Метод

Metoda wywoływana jako callback przy pobieraniu głównego statusu, korzysta z niej metoda GetUserMainStatus
private AfterUserMainStatus ( IAsyncResult result ) : void
result IAsyncResult
Результат void
        private void AfterUserMainStatus(IAsyncResult result)
        {
            HttpResponseMessage resp = null;
            BlipStatus status = null;
            BlipCommunicationState state = BlipCommunicationState.OK;
            Exception exp = null;
            HttpStatusCode httpCode = HttpStatusCode.OK;

            try
            {
                //pobieramy obiekt HttpClient, dzięki któremu został wysłany request
                //przekazaliśmy ten obiekt jako state
                var client = result.AsyncState as HttpClient;

                //pobieramy odpowiedź
                lock (httpAsyncClientLock)
                {
                    resp = client.EndSend(result);
                }

                resp.EnsureStatusIsSuccessful();

                //deserializujemy z json
                status = resp.Content.ReadAsJsonDataContract<StatusesList>()[0];

                //zgłaszamy zdarzenie że dane załadowaliśmy, przekazując nasze parametry zgłoszenia wraz ze statusem
            }
            catch (HttpStageProcessingException timeEx)
                {
                    //gdy wystąpiły jakieś błędy w komunikacji
                    state = BlipCommunicationState.CommunicationError;
                    if (resp != null) httpCode = resp.StatusCode;
                }
            catch (ArgumentOutOfRangeException aorEx)
            {
                //gdy wystąpiły jakieś błędy w komunikacji
                state = BlipCommunicationState.CommunicationError;
                if (resp != null) httpCode = resp.StatusCode;
            }

            catch (Exception ex)
            {
                state = BlipCommunicationState.Error;
                exp = ex;
            }
            finally
            {
                if (resp != null)
                {
                    resp.Dispose();
                    resp = null;
                }
            }

            if (((state & BlipCommunicationState.CommunicationError) == BlipCommunicationState.CommunicationError)
                && CommunicationError != null)
            {
                CommunicationError(null, new CommunicationErrorEventArgs(httpCode, BlipActions.AfterMainStatus));
                return;
            }

            if ((state & BlipCommunicationState.Error) == BlipCommunicationState.Error && ExceptionOccure != null)
            {
                ExceptionOccure(null, new ExceptionEventArgs(exp));
                return;
            }

            if (status != null && MainStatusLoaded != null)
            {
                MainStatusLoaded(null, new MainStatusLoadingEventArgs(status));
            }
        }