diff options
Diffstat (limited to 'kppp/accounting.h')
-rw-r--r-- | kppp/accounting.h | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/kppp/accounting.h b/kppp/accounting.h new file mode 100644 index 00000000..2d3a299c --- /dev/null +++ b/kppp/accounting.h @@ -0,0 +1,144 @@ +/* -*- C++ -*- + * kPPP: A pppd front end for the KDE project + * + * $Id$ + * + * Copyright (C) 1997 Bernd Johannes Wuebben + * wuebben@math.cornell.edu + * This file contributed by: Mario Weilguni, <mweilguni@sime.com> + * + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the Free + * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef __ACCOUNTING__H__ +#define __ACCOUNTING__H__ + +#include <qobject.h> +#include <kprocess.h> +#include "ruleset.h" + +class PPPStats; + +///////////////////////////////////////////////////////////////////////////// +// +// Accounting base class +// +///////////////////////////////////////////////////////////////////////////// +class AccountingBase : public QObject { + Q_OBJECT +public: + AccountingBase(QObject *parent); + virtual ~AccountingBase(); + + virtual double total() const; + virtual double session() const; + + virtual bool running() const { return false; }; + virtual bool loadRuleSet(const QString & name) = 0; + +public slots: + virtual void slotStart() {}; + virtual void slotStop() {}; + +signals: + void changed(QString total, QString session); + +protected: + void logMessage(QString, bool = FALSE); + bool saveCosts(); + bool loadCosts(); + + QString LogFileName; + double _total, _session; + QString _name; + + // static members +public: + static void resetCosts(const QString & accountname); + static void resetVolume(const QString & accountname); + static QString getCosts(const QString & accountname); + static QString getAccountingFile(const QString &accountname); +}; + + +///////////////////////////////////////////////////////////////////////////// +// +// Accounting based on ruleset files +// +///////////////////////////////////////////////////////////////////////////// +class Accounting : public AccountingBase { + Q_OBJECT +public: + Accounting(QObject *parent, PPPStats *st); + + virtual double total() const; + virtual double session() const; + + virtual bool loadRuleSet(const QString & name); + virtual bool running() const; + +private: + virtual void timerEvent(QTimerEvent *t); + +public slots: + virtual void slotStart(); + virtual void slotStop(); + +signals: + void changed(QString total, QString session); + +private: + int acct_timer_id; + int update_timer_id; + time_t start_time; + double _lastcosts; + double _lastlen; + RuleSet rules; + PPPStats *stats; +}; + + +///////////////////////////////////////////////////////////////////////////// +// +// Accounting based on executable files +// +///////////////////////////////////////////////////////////////////////////// +class ExecutableAccounting : public AccountingBase { + Q_OBJECT +public: + ExecutableAccounting(PPPStats *st, QObject *parent = 0); + + virtual bool loadRuleSet(const QString & ); + virtual bool running() const; + +public slots: + virtual void slotStart(); + virtual void slotStop(); + +private slots: + void gotData(KProcess *proc, char *buffer, int buflen); + +signals: + void changed(QString total, QString session); + +private: + KProcess *proc; + QString currency; + QString provider; + PPPStats *stats; +}; + +#endif |