X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/becf6dfe4fe2ecd43792aa53a302c5866483f306..5dfab5bea026e33031d041b233c73e196469b4ac:/projects/stargazer/tariff_impl.h diff --git a/projects/stargazer/tariff_impl.h b/projects/stargazer/tariff_impl.h index 2086b488..a45df060 100644 --- a/projects/stargazer/tariff_impl.h +++ b/projects/stargazer/tariff_impl.h @@ -22,73 +22,68 @@ * Author : Boris Mikhailenko */ -/* - $Revision: 1.9 $ - $Date: 2010/10/07 17:53:39 $ - $Author: faust $ - */ - -#ifndef TARIFF_H -#define TARIFF_H +#pragma once -#include +#include "stg/tariff.h" +#include "stg/tariff_conf.h" #include -#include -#include "os_int.h" -#include "tariff_conf.h" +#include +#include #define TARIFF_DAY 0 #define TARIFF_NIGHT 1 -class TARIFF +namespace STG { -public: - TARIFF() - : tariffData() - {}; - TARIFF(const std::string & name) - : tariffData(name) - {}; - TARIFF(const TARIFF_DATA & td) - : tariffData(td) - {}; - TARIFF(const TARIFF & t) - : tariffData(t.tariffData) - {}; - ~TARIFF() {}; - - double GetPriceWithTraffType(uint64_t up, - uint64_t down, - int dir, - time_t t) const; - double GetFreeMb() const { return tariffData.tariffConf.free; }; - double GetPassiveCost() const { return tariffData.tariffConf.passiveCost; }; - double GetFee() const { return tariffData.tariffConf.fee; }; - double GetFree() const { return tariffData.tariffConf.free; }; - - void PrintTariff() const; - - const std::string & GetName() const { return tariffData.tariffConf.name; }; - void SetName(const std::string & name) { tariffData.tariffConf.name = name; }; - - int GetTraffType() const { return tariffData.tariffConf.traffType; }; - int64_t GetTraffByType(uint64_t up, uint64_t down) const; - int GetThreshold(int dir) const; - void GetTariffData(TARIFF_DATA * td) const; - - TARIFF & operator=(const TARIFF_DATA & td); - TARIFF & operator=(const TARIFF & t); - bool operator==(const TARIFF & rhs) const { return GetName() == rhs.GetName(); }; - bool operator!=(const TARIFF & rhs) const { return GetName() != rhs.GetName(); }; - -private: - TARIFF_DATA tariffData; - - double GetPriceWithoutFreeMb(int dir, int mb, time_t t) const; - int Interval(int dir, time_t t) const; + +class TariffImpl : public Tariff { + public: + explicit TariffImpl(const std::string & name) + : tariffData(name) + {} + explicit TariffImpl(const TariffData & td) + : tariffData(td) + {} + + TariffImpl(const TariffImpl&) = default; + TariffImpl& operator=(const TariffImpl&) = default; + TariffImpl(TariffImpl&&) = default; + TariffImpl& operator=(TariffImpl&&) = default; + + double GetPriceWithTraffType(uint64_t up, + uint64_t down, + int dir, + time_t t) const; + double GetFreeMb() const { return tariffData.tariffConf.free; } + double GetPassiveCost() const { return tariffData.tariffConf.passiveCost; } + double GetFee() const { return tariffData.tariffConf.fee; } + double GetFree() const { return tariffData.tariffConf.free; } + Period GetPeriod() const { return tariffData.tariffConf.period; } + ChangePolicy GetChangePolicy() const { return tariffData.tariffConf.changePolicy; } + time_t GetChangePolicyTimeout() const { return tariffData.tariffConf.changePolicyTimeout; } + + void Print() const; + + const std::string & GetName() const { return tariffData.tariffConf.name; } + void SetName(const std::string & name) { tariffData.tariffConf.name = name; } + + int GetTraffType() const { return tariffData.tariffConf.traffType; } + int64_t GetTraffByType(uint64_t up, uint64_t down) const; + int GetThreshold(int dir) const; + const TariffData & GetTariffData() const { return tariffData; } + + TariffImpl & operator=(const TariffData & td); + bool operator==(const TariffImpl & rhs) const { return GetName() == rhs.GetName(); } + bool operator!=(const TariffImpl & rhs) const { return GetName() != rhs.GetName(); } + std::string TariffChangeIsAllowed(const Tariff & to, time_t currentTime) const; + + private: + TariffData tariffData; + + double GetPriceWithoutFreeMb(int dir, int64_t mb, time_t t) const; + int Interval(int dir, time_t t) const; }; -//----------------------------------------------------------------------------- -#endif +}