Skip to content

Commit 882a1b0

Browse files
committed
tested
1 parent c70b8e9 commit 882a1b0

File tree

4 files changed

+24
-20
lines changed

4 files changed

+24
-20
lines changed

Consumer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class Consumer {
77
constructor(id, clientSecret, queue) {
88
this.id = id;
99
this.clientSecret = clientSecret;
10-
this.queues = queue;
10+
this.queue = queue;
1111
}
1212
}
1313

MessageQueue.js

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,27 @@ class MessageQueue {
77

88
constructor(name) {
99
this.name = name;
10+
this.root = null;
1011
}
1112

1213
Enqueue(message) {
13-
var node = new QueueNode(message);
14-
node.next = null;
15-
if (this.root == null) {
16-
this.root = node;
17-
} else {
18-
var curr = this.root;
19-
while (curr != null) {
20-
curr = curr.next;
21-
}
22-
curr = node;
14+
if (this.root === null) {
15+
this.root = new QueueNode(message);
16+
return;
17+
}
18+
if (this.root.next === null) {
19+
this.root.next = new QueueNode(message);
20+
return;
21+
}
22+
var currNode = this.root;
23+
while(currNode.next !== null) {
24+
currNode = currNode.next;
2325
}
26+
currNode.next = new QueueNode(message);
2427
}
2528

2629
Dequeue() {
27-
if (this.root !== null) {
30+
if (this.root != null) {
2831
var node = this.root;
2932
this.root = this.root.next;
3033
return node.message;

QueueNode.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ class QueueNode {
33
message;
44
next;
55

6-
constructor(message, next) {
6+
constructor(message) {
77
this.message = message;
8-
this.next = next;
8+
this.next = null;
99
}
1010
}
1111

app.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,16 @@ app.post('/queues/:queue/consumers', function (req, res, next) {
6868
// publish
6969
app.post('/queues/:queue/messages', function (req, res, next) {
7070
try {
71-
var queues = consumers.findAll(c => c.queue.name === req.params.queue);
72-
if (queues.length > 0) {
73-
for (var q in queues) {
74-
q.Enqueue(req.body.message);
71+
var activeConsumers = consumers.filter(c => c.queue.name === req.params.queue);
72+
if (activeConsumers.length > 0) {
73+
for (let i = 0; i < activeConsumers.length; i++) {
74+
console.log(activeConsumers[i]);
75+
activeConsumers[i].queue.Enqueue(req.body.message);
7576
}
7677
}
7778
var queue = queues.find(q => q.name === req.params.queue);
7879
if (!queue) {
79-
queues.push(req.params.queue);
80+
queue.Enqueue(req.params.queue);
8081
}
8182
res.sendStatus(200);
8283
} catch (error) {
@@ -92,7 +93,7 @@ app.get('/queues/:queue/consumers/:id/messages', function (req, res, next) {
9293
var queue = queues.find(q => q.name === req.params.queue);
9394
var consumer = consumers.find(c => c.id === req.params.id && c.queue.name === req.params.queue);
9495
if (queue && consumer) {
95-
var message = queue.Dequeue();
96+
var message = consumer.queue.Dequeue();
9697
message ? res.status(200).json(message) : res.sendStatus(204);
9798
} else {
9899
res.sendStatus(204);

0 commit comments

Comments
 (0)