예제 #1
0
        private string AttemptSend(string method, byte[] data, string docType)
        {
            EventSource.Raise(Event.MethodEnter, method, Event.Arg("data", data), Event.Arg("docType", docType));

            string response = null;

            try
            {
                if (!LensSession.IsOpen())
                {
                    LensSession.Open();
                }

                EventSource.Raise(Event.Information, method, "Sending request to Lens.", Event.Arg("Host", LensSession.GetHost()), Event.Arg("Port", LensSession.GetPort()), Event.Arg("Timeout", Timeout));

                response = TagResume(data, docType);

                EventSource.Raise(Event.Information, method, "Received response from Lens.", Event.Arg("Response", response));

                ParseForErrors(response);
                return(response);
            }
            catch (LensException ex)
            {
                EventSource.Raise(Event.Error, method, ex, null, Event.Arg("data", data), Event.Arg("docType", docType), Event.Arg("response", response));
                throw;
            }
            catch (Exception ex)
            {
                EventSource.Raise(Event.Error, method, ex, null, Event.Arg("data", data), Event.Arg("docType", docType), Event.Arg("response", response));

                if (ex.InnerException is SocketException)
                {
                    throw new LensUnavailableException(string.Format("Failed to connect to Lens server {0}:{1}.", LensSession.GetHost(), LensSession.GetPort()), ex);
                }
                else if (ex.InnerException is XmlException)
                {
                    throw new LensXmlInvalidException("The XML returned from Lens is invalid.", ex);
                }
                else
                {
                    throw new LensException(ex.Message, ex);
                }
            }
            finally
            {
                LensSession.Close();

                EventSource.Raise(Event.MethodExit, method, Event.Arg("data", data), Event.Arg("docType", docType), Event.Arg("response", response));
            }
        }