Exemplo n.º 1
0
        public void writeLogMessage(String strMsg)
        {
            try{
                int len = strMsg.length();

                if (m_pFile == null)
                {
                    m_pFile = new CRhoFile();
                }

                if (!m_pFile.isOpened())
                {
                    m_pFile.open(getLogConf().getLogFilePath(), CRhoFile.EOpenModes.OpenForAppend);
                    m_nFileLogSize = (int)m_pFile.size();
                    loadLogPosition();
                }

                if (getLogConf().getMaxLogFileSize() > 0)
                {
                    if ((m_nCirclePos >= 0 && m_nCirclePos + len > getLogConf().getMaxLogFileSize()) ||
                        (m_nCirclePos < 0 && m_nFileLogSize + len > getLogConf().getMaxLogFileSize()))
                    {
                        m_pFile.movePosToStart();
                        m_nFileLogSize = 0;
                        m_nCirclePos   = 0;
                    }
                }

                //int nWritten = m_pFile.writeString(strMsg);
                m_pFile.writeString(strMsg);
                m_pFile.flush();

                if (m_nCirclePos >= 0)
                {
                    m_nCirclePos += len;
                }
                else
                {
                    m_nFileLogSize += len;
                }

                saveLogPosition();
            }catch (Exception exc) {
                log(exc.Message);
            }
        }
Exemplo n.º 2
0
        private void saveLogPosition()
        {
            if (m_nCirclePos < 0)
            {
                return;
            }

            if (m_nCirclePos > (int)getLogConf().getMaxLogFileSize())
            {
                return;
            }

            String strPos = m_nCirclePos.ToString();

            for (int i = strPos.length(); i < 10; i++)
            {
                strPos += ' ';
            }

            m_pPosFile.movePosToStart();
            m_pPosFile.writeString(strPos);
            m_pPosFile.flush();
        }
Exemplo n.º 3
0
        private void GetPullFileCallback(IAsyncResult asyncResult)
        {
            HttpWebResponse response = null;

            try
            {
                response = m_webRequest.EndGetResponse(asyncResult) as HttpWebResponse;
            }
            catch (WebException e)
            {
                if (!m_bCancel)
                {
                    LOG.ERROR("EndGetResponse", e);
                    response = (HttpWebResponse)e.Response;
                    m_code   = response != null?Convert.ToInt32(response.StatusCode) : 0;
                }
                else
                {
                    LOG.INFO("Request was cancelled by user.");
                }
            }
            if (response == null || m_bCancel)
            {
                return;
            }

            Stream stream = response.GetResponseStream();

            m_code = Convert.ToInt32(response.StatusCode);
            LOG.INFO("getResponseCode : " + m_code);

            m_strCookies = makeClientCookie(response);

            readHeaders(m_headers, response);
            copyHashtable(m_OutHeaders, m_headers);

            try
            {
                if (m_code == Convert.ToInt32(HttpStatusCode.OK))
                {
                    m_pulledFile.setPosTo(0);
                }

                if (m_code == Convert.ToInt32(HttpStatusCode.RequestedRangeNotSatisfiable))
                {
                    m_code = Convert.ToInt32(HttpStatusCode.PartialContent);
                }
                else
                {
                    if (m_code >= 400 && m_code != Convert.ToInt32(HttpStatusCode.PartialContent))
                    {
                        LOG.ERROR("Error retrieving data: " + m_code);
                        if (m_code == Convert.ToInt32(HttpStatusCode.Unauthorized) && m_oSession != null)
                        {
                            LOG.ERROR("Unauthorize error.Client will be logged out");
                            m_oSession.logout();
                        }

                        m_strRespBody = readFully(stream, getResponseEncoding());
                        LOG.TRACE("Response body: " + m_strRespBody);
                    }
                    else
                    {
                        int nRead = 0;

                        byte[] byteBuffer = new byte[1024 * 20];

                        do
                        {
                            nRead = stream.Read(byteBuffer, 0, 1024 * 20);
                            if (nRead > 0)
                            {
                                m_pulledFile.write(byteBuffer, nRead);
                                m_pulledFile.flush();
                                m_nCurDownloadSize += nRead;
                            }
                        }while(!m_bCancel && nRead > 0);

                        if (m_code == Convert.ToInt32(HttpStatusCode.OK) || (m_code == Convert.ToInt32(HttpStatusCode.PartialContent) && isFinishDownload(response.Headers["Content-Range"])))
                        {
                            m_nCurDownloadSize = 0;
                        }
                    }
                }
            }
            finally
            {
                stream.Close();
                response.Close();
                m_respWaitEvent.Set();
            }
        }