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); } }
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(); }
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(); } }