* Author : Maxim Mamontov <faust@stargazer.dp.ua>
*/
-#ifndef USER_H
-#define USER_H
+#pragma once
-#include <ctime>
-#include <string>
-
-#include "os_int.h"
#include "notifer.h"
#include "message.h"
-#include "tariff.h"
-#include "user_traff.h"
-class USER_PROPERTIES;
-class AUTH;
+#include <vector>
+#include <string>
+
+#include <ctime>
+#include <cstdint>
+
+namespace STG
+{
+
+struct Tariff;
+class UserProperties;
+class DirTraff;
+struct Auth;
+
+using CURR_IP_NOTIFIER = PropertyNotifierBase<uint32_t>;
+using CONNECTED_NOTIFIER = PropertyNotifierBase<bool>;
+
+struct User {
+ virtual ~User() = default;
-class USER {
-public:
- virtual ~USER() {}
virtual int WriteConf() = 0;
virtual int WriteStat() = 0;
- virtual const std::string & GetLogin() const = 0;
+ virtual const std::string& GetLogin() const = 0;
virtual uint32_t GetCurrIP() const = 0;
virtual time_t GetCurrIPModificationTime() const = 0;
- virtual void AddCurrIPBeforeNotifier(PROPERTY_NOTIFIER_BASE<uint32_t> * notifier) = 0;
- virtual void DelCurrIPBeforeNotifier(PROPERTY_NOTIFIER_BASE<uint32_t> * notifier) = 0;
+ virtual void AddCurrIPBeforeNotifier(CURR_IP_NOTIFIER* notifier) = 0;
+ virtual void DelCurrIPBeforeNotifier(const CURR_IP_NOTIFIER* notifier) = 0;
- virtual void AddCurrIPAfterNotifier(PROPERTY_NOTIFIER_BASE<uint32_t> * notifier) = 0;
- virtual void DelCurrIPAfterNotifier(PROPERTY_NOTIFIER_BASE<uint32_t> * notifier) = 0;
+ virtual void AddCurrIPAfterNotifier(CURR_IP_NOTIFIER* notifier) = 0;
+ virtual void DelCurrIPAfterNotifier(const CURR_IP_NOTIFIER* notifier) = 0;
- virtual void AddConnectedBeforeNotifier(PROPERTY_NOTIFIER_BASE<bool> * notifier) = 0;
- virtual void DelConnectedBeforeNotifier(PROPERTY_NOTIFIER_BASE<bool> * notifier) = 0;
+ virtual void AddConnectedBeforeNotifier(CONNECTED_NOTIFIER* notifier) = 0;
+ virtual void DelConnectedBeforeNotifier(const CONNECTED_NOTIFIER* notifier) = 0;
- virtual void AddConnectedAfterNotifier(PROPERTY_NOTIFIER_BASE<bool> * notifier) = 0;
- virtual void DelConnectedAfterNotifier(PROPERTY_NOTIFIER_BASE<bool> * notifier) = 0;
+ virtual void AddConnectedAfterNotifier(CONNECTED_NOTIFIER* notifier) = 0;
+ virtual void DelConnectedAfterNotifier(const CONNECTED_NOTIFIER* notifier) = 0;
virtual int GetID() const = 0;
virtual double GetPassiveTimePart() const = 0;
- virtual const TARIFF * GetTariff() const = 0;
+ virtual const Tariff* GetTariff() const = 0;
virtual void ResetNextTariff() = 0;
- virtual const DIR_TRAFF & GetSessionUpload() const = 0;
- virtual const DIR_TRAFF & GetSessionDownload() const = 0;
+ virtual const DirTraff& GetSessionUpload() const = 0;
+ virtual const DirTraff& GetSessionDownload() const = 0;
+ virtual time_t GetSessionUploadModificationTime() const = 0;
+ virtual time_t GetSessionDownloadModificationTime() const = 0;
virtual bool GetConnected() const = 0;
virtual time_t GetConnectedModificationTime() const = 0;
+ virtual const std::string& GetLastDisconnectReason() const = 0;
virtual int GetAuthorized() const = 0;
- /*virtual int Authorize(uint32_t ip,
- uint32_t enabledDirs,
- const AUTH * auth) = 0;
- virtual void Unauthorize(const AUTH * auth) = 0;*/
- virtual bool IsAuthorizedBy(const AUTH * auth) const = 0;
+ virtual time_t GetAuthorizedModificationTime() const = 0;
- virtual int AddMessage(STG_MSG * msg) = 0;
+ virtual bool IsAuthorizedBy(const Auth * auth) const = 0;
+ virtual std::vector<std::string> GetAuthorizers() const = 0;
+
+ virtual int AddMessage(Message* msg) = 0;
virtual void UpdatePingTime(time_t t = 0) = 0;
virtual time_t GetPingTime() const = 0;
virtual void Run() = 0;
- virtual const std::string & GetStrError() const = 0;
+ virtual const std::string& GetStrError() const = 0;
- virtual USER_PROPERTIES & GetProperty() = 0;
- virtual const USER_PROPERTIES & GetProperty() const = 0;
+ virtual UserProperties& GetProperties() = 0;
+ virtual const UserProperties& GetProperties() const = 0;
virtual bool GetDeleted() const = 0;
virtual void SetDeleted() = 0;
virtual time_t GetLastWriteStatTime() const = 0;
virtual bool IsInetable() = 0;
- virtual std::string GetEnabledDirs() = 0;
+ virtual std::string GetEnabledDirs() const = 0;
virtual void OnAdd() = 0;
virtual void OnDelete() = 0;
-};
-typedef USER * USER_PTR;
-typedef const USER * CONST_USER_PTR;
+ virtual std::string GetParamValue(const std::string& name) const = 0;
+};
-#endif
+}