Пример #1
0
        private runrepResultsPortfolioStruct runQuery(string queryString)
        {
            string runrepSessionID = string.Empty;
            bool ifRetry = true;
            bool isContingency = false;
            DateTime runStartTime = DateTime.Now;

            runrepResultsPortfolioStruct selectReturn = null;
            GenevaWfmInterface.GenevaSoap.Service webServ = new GenevaWfmInterface.GenevaSoap.Service();
            webServ.Url = m_genevaUrl;

            while (ifRetry)
            {
                try
                {
                    if (runrepSessionID.Equals(String.Empty))
                        runrepSessionID = webServ.StartCallableRunrep(m_genevaPort, m_genevaHostName, m_genevaUid, m_genevaPassword, "-f empty");

                    selectReturn = webServ.RunCallableRunrepRunSelect(runrepSessionID, queryString, "");
                    webServ.ShutdownCallableSession(runrepSessionID);
                    if (isContingency)
                    {
                        SendMailMessage(listTo, listFrom, subject, "Geneva SOAP call succeeded.");
                        message = "Geneva SOAP call succeeded.";
                    }

                    ifRetry = false;
                }
                catch (System.Web.Services.Protocols.SoapException wex)
                {
                    if (DateTime.Now.CompareTo(runStartTime.AddMinutes(minutesSoapRetry)) < 0)
                    {
                        isContingency = true;
                        SendMailMessage(listTo, listFrom, subject, wex.ToString());
                        Thread.Sleep(60000);
                    }
                    else
                    {
                        SendMailMessage(listTo, listFrom, subject, "Geneva SOAP call timed out. Giving up now.");
                        message = "Geneva SOAP call timed out. Giving up now.";
                        ifRetry = false;
                    }
                    _log.Error(wex.Message);
                }
                catch (Exception e)
                {
                    _log.Error(e.Message);
                    message = e.Message;
                    throw e;
                }
            }
            return selectReturn;
        }