X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/6f7160dd027c8ce7e2760aa369768ba39ab80181..296c906e2689b9b5dc26d2f2d3e1e2d9e1662d3b:/projects/stargazer/tariff_impl.h?ds=inline diff --git a/projects/stargazer/tariff_impl.h b/projects/stargazer/tariff_impl.h index aaa6a3b9..a45df060 100644 --- a/projects/stargazer/tariff_impl.h +++ b/projects/stargazer/tariff_impl.h @@ -22,72 +22,68 @@ * Author : Boris Mikhailenko */ -/* - $Revision: 1.9 $ - $Date: 2010/10/07 17:53:39 $ - $Author: faust $ - */ +#pragma once -#ifndef TARIFF_IMPL_H -#define TARIFF_IMPL_H - -#include +#include "stg/tariff.h" +#include "stg/tariff_conf.h" #include -#include -#include "tariff.h" -#include "os_int.h" -#include "tariff_conf.h" +#include +#include #define TARIFF_DAY 0 #define TARIFF_NIGHT 1 -class TARIFF_IMPL : public TARIFF { -public: - TARIFF_IMPL() - : tariffData() - {}; - TARIFF_IMPL(const std::string & name) - : tariffData(name) - {}; - TARIFF_IMPL(const TARIFF_DATA & td) - : tariffData(td) - {}; - TARIFF_IMPL(const TARIFF_IMPL & t) - : tariffData(t.tariffData) - {}; - virtual ~TARIFF_IMPL() {}; - - 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 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 TARIFF_DATA & GetTariffData() const { return tariffData; } - - 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; +namespace STG +{ + +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 +}