⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 onlinesig.cpp

📁 电驴的MAC源代码
💻 CPP
字号:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Name:         OnLineSig Class////// Purpose:      Monitor aMule Online Statistics by reading amulesig.dat file////// Author:       ThePolish <thepolish@vipmail.ru>////// Copyright (C) 2004 by ThePolish////// Derived from CAS by Pedro de Oliveira <falso@rdk.homeip.net>////// Pixmats from aMule http://www.amule.org////// This program is free software; you can redistribute it and/or modify///  it under the terms of the GNU General Public License as published by/// the Free Software Foundation; either version 2 of the License, or/// (at your option) any later version.////// This program is distributed in the hope that it will be useful,/// but WITHOUT ANY WARRANTY; without even the implied warranty of/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the/// GNU General Public License for more details.////// You should have received a copy of the GNU General Public License/// along with this program; if not, write to the/// Free Software Foundation, Inc.,/// 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////#ifdef __BORLANDC__ #pragma hdrstop#endif// For all others, include the necessary headers#ifndef WX_PRECOMP #include "wx/wx.h"#endif#include "onlinesig.h"#include <wx/txtstrm.h>#include <wx/wfstream.h>// ConstructorOnLineSig::OnLineSig ( const wxFileName& file,                       const double absoluteMaxDL,                       const wxDateTime absoluteMaxDlDate ){	m_amulesig = file;	m_sessionMaxDL = 0.0;	m_sessionMaxDLDate = wxDateTime::Now();	m_absoluteMaxDL = absoluteMaxDL;	m_absoluteMaxDlDate = absoluteMaxDlDate;		m_isSessionMaxDlReseted = false;	m_isAbsoluteMaxDlReseted = false;	Refresh ();}// DestructorOnLineSig::~OnLineSig (){}// AccessorsvoidOnLineSig::SetAmuleSig ( const wxFileName& file ){	m_amulesig = file;	Refresh ();}voidOnLineSig::Refresh (){	wxFile file; 	if ( file.Open(m_amulesig.GetFullPath ()) ) {		wxFileInputStream input ( file );		wxTextInputStream text ( input );		text.SetStringSeparators ( wxT( "\n" ) );		text >> m_amuleState;		text >> m_serverName;		text >> m_serverIP;		text >> m_serverPort;		text >> m_connexionID;		text >> m_kadInfo;		text >> m_DLRate;		text >> m_ULRate;		text >> m_queue;		text >> m_sharedFiles;		text >> m_user;		text >> m_totalDL;		text >> m_totalUL;		text >> m_version;		text >> m_sessionDL;		text >> m_sessionUL;		text >> m_runTimeS;		double dl;		m_DLRate.ToDouble ( &dl );		if ( dl > m_sessionMaxDL || m_isSessionMaxDlReseted ) {			m_sessionMaxDL = dl;			m_sessionMaxDLDate = wxDateTime::Now();			m_isSessionMaxDlChanged = true;			m_isSessionMaxDlReseted = false;		}		else {			m_isSessionMaxDlChanged = false;		}		if ( dl > m_absoluteMaxDL || m_isAbsoluteMaxDlReseted ) {			m_absoluteMaxDL = dl;			m_absoluteMaxDlDate = wxDateTime::Now();			m_isAbsoluteMaxDlChanged = true;			m_isAbsoluteMaxDlReseted = false;		}		else {			m_isAbsoluteMaxDlChanged = false;		}	}	file.Close();	}int OnLineSig::GetAmuleState() const{	if ( m_amuleState >= 0 && m_amuleState <= 2 ) {		return ( m_amuleState );	} else {		return ( -1 );	}}int OnLineSig::GetKadState() const{	if ( m_kadInfo >= 0 && m_kadInfo <= 2 ) {		return ( m_kadInfo );	} else {		return ( -1 );	}}wxString OnLineSig::GetServerName () const{	return m_serverName;}wxString OnLineSig::GetServerIP () const{	return m_serverIP;}wxString OnLineSig::GetServerPort () const{	return m_serverPort;}wxString OnLineSig::GetConnexionID () const{	return m_connexionID;}wxString OnLineSig::GetULRate () const{	return m_ULRate;}wxString OnLineSig::GetDLRate () const{	return m_DLRate;}wxString OnLineSig::GetQueue () const{	return m_queue;}wxString OnLineSig::GetSharedFiles () const{	return m_sharedFiles;}wxString OnLineSig::GetUser () const{	return m_user;}wxString OnLineSig::GetTotalUL () const{	return m_totalUL;}wxString OnLineSig::GetTotalDL () const{	return m_totalDL;}wxString OnLineSig::GetVersion () const{	return m_version;}wxString OnLineSig::GetSessionUL () const{	return m_sessionUL;}wxString OnLineSig::GetSessionDL () const{	return m_sessionDL;}//only used to check if aMule is running or notint OnLineSig::GetUpStatus () const{	return m_runTimeS;}wxString OnLineSig::GetRunTime (){	unsigned int seconds = m_runTimeS;	unsigned int days = PullCount( &seconds, 86400 );	unsigned int hours = PullCount( &seconds, 3600 );	unsigned int minutes = PullCount( &seconds, 60 );	if ( days > 0 ) {		return ( wxString::Format ( _( "%02uD %02uh %02umin %02us" ), days, hours, minutes, seconds ) );	} else if ( hours > 0 ) {		return ( wxString::Format ( _( "%02uh %02umin %02us" ), hours, minutes, seconds ) );	} else if ( minutes > 0 ) {		return ( wxString::Format ( _( "%02umin %02us" ), minutes, seconds ) );	} else {		return ( wxString::Format ( _( "%02us" ), seconds ) );	}}wxString OnLineSig::GetConvertedTotalUL (){	return ( BytesConvertion ( m_totalUL ) );}wxString OnLineSig::GetConvertedTotalDL (){	return ( BytesConvertion ( m_totalDL ) );}wxString OnLineSig::GetConvertedSessionUL (){	return ( BytesConvertion ( m_sessionUL ) );}wxString OnLineSig::GetConvertedSessionDL (){	return ( BytesConvertion ( m_sessionDL ) );}wxString OnLineSig::GetConnexionIDType () const{	if ( m_connexionID == wxT( "H" ) ) {		return ( wxString ( _( "HighID" ) ) );	} else if ( m_connexionID == wxT( "L" ) ) {                return ( wxString ( _( "LowID" ) ) );	}		else {		return ( wxString ( _( "Not Connected" ) ) );	}}double OnLineSig::GetSessionMaxDL () const{	return ( m_sessionMaxDL );}wxDateTime OnLineSig::GetSessionMaxDlDate () const{	return ( m_sessionMaxDLDate );}void OnLineSig::ResetSessionMaxDL (){	m_sessionMaxDL = 0.0;	m_sessionMaxDLDate = wxDateTime::Now();	m_isSessionMaxDlReseted = true;}bool OnLineSig::IsSessionMaxDlChanged() const{	return ( m_isSessionMaxDlChanged );}double OnLineSig::GetAbsoluteMaxDL () const{	return ( m_absoluteMaxDL );}wxDateTime OnLineSig::GetAbsoluteMaxDlDate () const{	return ( m_absoluteMaxDlDate );}void OnLineSig::ResetAbsoluteMaxDL (){	m_absoluteMaxDL = 0.0;	m_absoluteMaxDlDate = wxDateTime::Now();	m_isAbsoluteMaxDlReseted = true;}bool OnLineSig::IsAbsoluteMaxDlChanged() const{	return ( m_isAbsoluteMaxDlChanged );}// Private usewxString OnLineSig::BytesConvertion ( const wxString & bytes ){	double	d_bytes;	wxString	c_bytes;	bytes.ToDouble ( &d_bytes );	int	i = 0;	while ( d_bytes > 1024 ) {		d_bytes /= 1024;		i++;	}	switch ( i ) {	case 0:		c_bytes = wxString::Format ( _( "%.0f B" ), d_bytes );		break;	case 1:		c_bytes = wxString::Format ( _( "%.2f KB" ), d_bytes );		break;	case 2:		c_bytes = wxString::Format ( _( "%.2f MB" ), d_bytes );		break;	case 3:		c_bytes = wxString::Format ( _( "%.2f GB" ), d_bytes );		break;	default:		c_bytes = wxString::Format ( _( "%.2f TB" ), d_bytes );		break;	}	return c_bytes;}unsigned int OnLineSig::PullCount ( unsigned int *runtime, const unsigned int count ){	unsigned int answer = *runtime / count;	*runtime -= answer * count;	return answer;}// File_checked_for_headers

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -