-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNetworkServiceDescriptor.h
More file actions
60 lines (47 loc) · 2.45 KB
/
NetworkServiceDescriptor.h
File metadata and controls
60 lines (47 loc) · 2.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#ifndef NETWORK_SERVICE_DESCRIPTOR_H
#define NETWORK_SERVICE_DESCRIPTOR_H
#include <string>
#include <chrono>
enum class ServiceType { Mail, File, Network };
enum class ConnectionType { Send, Receive };
class NetworkServiceDescriptor {
private:
ServiceType serviceType;
ConnectionType connectionType;
std::string address;
std::chrono::system_clock::time_point connectionTime;
size_t dataSize;
std::chrono::duration<double> connectionDuration;
size_t incomingTraffic, outgoingTraffic;
public:
NetworkServiceDescriptor(ServiceType st, ConnectionType ct, const std::string &addr,
std::chrono::system_clock::time_point time, size_t size,
std::chrono::duration<double> duration, size_t inTraffic, size_t outTraffic)
: serviceType(st), connectionType(ct), address(addr), connectionTime(time),
dataSize(size), connectionDuration(duration), incomingTraffic(inTraffic), outgoingTraffic(outTraffic) {}
// Accessor functions
ServiceType getServiceType() const { return serviceType; }
ConnectionType getConnectionType() const { return connectionType; }
std::string getAddress() const { return address; }
std::chrono::system_clock::time_point getConnectionTime() const { return connectionTime; }
size_t getDataSize() const { return dataSize; }
std::chrono::duration<double> getConnectionDuration() const { return connectionDuration; }
size_t getIncomingTraffic() const { return incomingTraffic; }
size_t getOutgoingTraffic() const { return outgoingTraffic; }
// Calculate service cost (dummy implementation)
double NetworkServiceDescriptor::calculateServiceCost() {
double cost = 0.0;
// Ïðèìåð ðàñ÷åòà ñòîèìîñòè íà îñíîâå äëèòåëüíîñòè è îáúåìà äàííûõ
double costPerMinute = 10tg; // Ñòîèìîñòü â ìèíóòó, óñòàíîâèòå ïîäõîäÿùåå çíà÷åíèå
double costPerMB = 5tg; // Ñòîèìîñòü çà MB, óñòàíîâèòå ïîäõîäÿùåå çíà÷åíèå
cost += this->connectionDuration * costPerMinute; // Ñòîèìîñòü íà îñíîâå äëèòåëüíîñòè ñîåäèíåíèÿ
cost += this->dataSize * costPerMB; // Ñòîèìîñòü íà îñíîâå îáúåìà ïåðåäàííûõ äàííûõ
// Äîïîëíèòåëüíûå óñëîâèÿ â çàâèñèìîñòè îò òèïà ñåðâèñà
//if (this->serviceType == /* òèï ñåðâèñà */) {
// Äîïîëíèòåëüíûå ðàñ÷åòû äëÿ êîíêðåòíîãî òèïà ñåðâèñà
//}
// Äðóãèå ðàñ÷åòû ïî íåîáõîäèìîñòè
return cost;
}
};
#endif // NETWORK_SERVICE_DESCRIPTOR_H