forked from ashishps1/awesome-low-level-design
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSubscriber.cpp
More file actions
43 lines (35 loc) · 1.26 KB
/
Subscriber.cpp
File metadata and controls
43 lines (35 loc) · 1.26 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
#include "Subscriber.hpp"
#include <iostream>
Subscriber::Subscriber(std::string id, std::string name)
: id(id), name(name), active(true) {}
std::string Subscriber::getId() const { return id; }
std::string Subscriber::getName() const { return name; }
bool Subscriber::isActive() const { return active; }
const std::vector<Message>& Subscriber::getMessageQueue() const { return messageQueue; }
void Subscriber::receiveMessage(const Message& message) {
if (active) {
messageQueue.push_back(message);
}
}
void Subscriber::displayMessages() const {
std::cout << "\nMessages for " << name << ":" << std::endl;
if (messageQueue.empty()) {
std::cout << "No messages" << std::endl;
return;
}
for (const auto& message : messageQueue) {
message.displayInfo();
std::cout << "------------------------" << std::endl;
}
}
void Subscriber::clearMessages() {
messageQueue.clear();
}
void Subscriber::setActive(bool status) {
active = status;
}
void Subscriber::displayInfo() const {
std::cout << "Subscriber: " << name << " (ID: " << id << ")" << std::endl;
std::cout << "Status: " << (active ? "Active" : "Inactive") << std::endl;
std::cout << "Pending Messages: " << messageQueue.size() << std::endl;
}