Skip to content

Commit 3fa1c28

Browse files
committed
Unsubscribe implemented
1 parent bf0ff1b commit 3fa1c28

File tree

16 files changed

+505
-415
lines changed

16 files changed

+505
-415
lines changed

dist/browser.js

Lines changed: 185 additions & 153 deletions
Large diffs are not rendered by default.

dist/browser.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/nodejs.js

Lines changed: 185 additions & 153 deletions
Large diffs are not rendered by default.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "dop",
3-
"version": "0.6.0",
3+
"version": "0.7.0",
44
"main": "./dist/nodejs.js",
55
"browser": "./dist/browser.js",
66
"unpkg": "./dist/browser.min.js",

src/core/constructors/node.js

Lines changed: 2 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ dop.core.node = function() {
66
this.request_inc = 1;
77
this.requests = {};
88
this.message_queue = []; // Response / Request / instrunctions queue
9-
this.object_subscribed = {};
10-
this.object_owner = {};
9+
this.subscriber = {};
10+
this.owner = {};
1111
// Generating token
1212
do { this.token = dop.util.uuid() }
1313
while (typeof dop.data.node[this.token]=='object');
@@ -29,45 +29,4 @@ dop.core.node.prototype.subscribe = function() {
2929

3030
dop.core.node.prototype.unsubscribe = function(object) {
3131
return dop.protocol.unsubscribe(this, object);
32-
};
33-
34-
35-
36-
dop.protocol.unsubscribe = function(node, object) {
37-
var object_id = dop.getObjectId(object),
38-
object_data = dop.data.object[object_id];
39-
40-
if (isObject(object_data) && isObject(object_data.node[node.token]) && object_data.node[node.token].owner) {
41-
var request = dop.core.createRequest(node, dop.protocol.instructions.unsubscribe, object_id);
42-
dop.core.storeSendMessages(node, request);
43-
return request.promise;
44-
}
45-
else
46-
return Promise.reject(dop.core.error.reject.SUBSCRIPTION_NOT_FOUND);
47-
};
48-
49-
50-
51-
dop.protocol.onunsubscribe = function(node, request_id, request) {
52-
var object_id = request[1],
53-
object_data = dop.data.object[object_id],
54-
response = dop.core.createResponse(request_id);
55-
56-
if (isObject(object_data) && isObject(object_data.node[node.token]) && object_data.node[node.token].subscribed) {
57-
58-
var roles = object_data.node[node.token];
59-
roles.subscribed = false;
60-
61-
if (roles.owner === false)
62-
object_data.nodes_total -= 1;
63-
64-
if (object_data.nodes_total === 0)
65-
delete dop.data.object[object_id];
66-
67-
response.push(0);
68-
}
69-
else
70-
response.push(dop.core.error.reject.SUBSCRIPTION_NOT_FOUND);
71-
72-
dop.core.storeSendMessages(node, response);
7332
};

src/core/protocol/registerObjectToNode.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ dop.core.registerObjectToNode = function(node, object) {
1515
if (object_data.node[node.token] === undefined) {
1616
object_data.nodes_total += 1;
1717
object_data.node[node.token] = {
18-
subscribed: false,
19-
owner: false,
20-
subscribed_version: 0,
18+
subscriber: 0, // 0 or 1 || false true
19+
owner: 0, // object_id_owner
20+
subscriber_version: 0,
2121
owner_version: 0
2222
};
2323
}

src/core/protocol/registerOwner.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
dop.core.registerOwner = function(node, object, object_owner_id) {
33
var object_data = dop.core.registerObjectToNode(node, object),
44
object_id = dop.getObjectId(object_data.object);
5-
object_data.node[node.token].owner = true;
6-
node.object_owner[object_owner_id] = object_id;
5+
object_data.node[node.token].owner = object_owner_id;
6+
node.owner[object_owner_id] = object_id;
77
};

src/core/protocol/registerSubscriber.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
dop.core.registerSubscriber = function(node, object) {
33
var object_data = dop.core.registerObjectToNode(node, object),
44
object_id = dop.getObjectId(object_data.object);
5-
node.object_subscribed[object_id] = true;
6-
if (object_data.node[node.token].subscribed)
5+
node.subscriber[object_id] = true;
6+
if (object_data.node[node.token].subscriber)
77
return false;
88
else {
9-
object_data.node[node.token].subscribed = true;
9+
object_data.node[node.token].subscriber = 1;
1010
return true;
1111
}
1212
};

src/core/protocol/unregisterNode.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11

22
dop.core.unregisterNode = function(node) {
33
var object_id, object_owner_id, object_data;
4-
// Removing subscribed objects
5-
for (object_id in node.object_subscribed) {
4+
// Removing subscriber objects
5+
for (object_id in node.subscriber) {
66
object_data = dop.data.object[object_id];
77
if (object_data.node[node.token] !== undefined) {
88
object_data.nodes_total -= 1;
99
delete object_data.node[node.token];
1010
}
1111
}
1212
// Removing owner objects
13-
for (object_owner_id in node.object_owner) {
14-
object_id = node.object_owner[object_owner_id];
13+
for (object_owner_id in node.owner) {
14+
object_id = node.owner[object_owner_id];
1515
object_data = dop.data.object[object_id];
1616
if (object_data.node[node.token] !== undefined) {
1717
object_data.nodes_total -= 1;

src/dop.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ var dop = {
2424
cons: {
2525
TOKEN: '~TOKEN_DOP',
2626
DOP: '~DOP',
27-
CONNECT: '~CONNECT',
27+
// CONNECT: '~CONNECT',
2828
SEND: '~SEND',
2929
DISCONNECT: '~DISCONNECT'
3030
}

0 commit comments

Comments
 (0)