Skip to content

Commit 780ecff

Browse files
committed
Making mutation instruction
1 parent fd3bd2d commit 780ecff

File tree

4 files changed

+88
-16
lines changed

4 files changed

+88
-16
lines changed

src/core/objects/emitObservers.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ dop.core.emitObservers = function(mutations) {
1818
subobject = mutation.object;
1919
object_dop = dop.getObjectDop(subobject);
2020

21-
if (!mutationsWithSubscribers /*&& dop.data.object_data[object_dop[0]].nodes > 0*/)
21+
if (!mutationsWithSubscribers && isObject(dop.data.object[object_dop[0]]))
2222
mutationsWithSubscribers = true;
2323

2424
// Emiting mutations to observerProperties

src/core/protocol/emitNodes.js

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11

22
dop.core.emitNodes = function(action) {
3-
// var object_id, node_token, node;
4-
// for (object_id in action) {
5-
// if (dop.data.object_data[object_id].nodes > 0) {
6-
// for (node_token in dop.data.object_data[object_id].node) {
7-
// node = dop.data.node[node_token];
8-
// dop.protocol.merge(node, object_id, action[object_id]);
9-
// }
10-
// }
11-
// }
3+
var object_id, node_token, node, object_data;
4+
for (object_id in action) {
5+
if (isObject(dop.data.object[object_id])) {
6+
object_data = dop.data.object[object_id];
7+
for (node_token in object_data.node) {
8+
if (object_data.node[node_token].subscriber===1) {
9+
node = dop.data.node[node_token];
10+
dop.protocol.mutation(node, object_id, action[object_id].action);
11+
}
12+
}
13+
}
14+
}
1215
};

src/protocol/mutation.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11

22
dop.protocol.mutation = function(node, object_id, action) {
3-
4-
console.log(node.token, object_id, action);
5-
// node.send(JSON.stringify(
6-
// dop.core.createRequest(node, dop.protocol.instructions.connect, token)
7-
//));
3+
var version = ++dop.data.object[object_id].node[node.token].subscriber_version,
4+
request = dop.core.createRequest(node, dop.protocol.instructions.mutation, object_id, version, action);
85

9-
};
6+
dop.core.storeSendMessages(node, request);
7+
return request.promise;
8+
};
9+
10+
dop.protocol.onmutation = function(node, request_id, request) {
11+
console.log( dop.env,request_id,request );
12+
}

test/protocol/mutations.js

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
var test = require('tape');
2+
var dop = require('../../dist/nodejs').create();
3+
var dopClient1 = require('../../dist/nodejs').create();
4+
var dopClient2 = require('../../dist/nodejs').create();
5+
var transportName = process.argv[2] || 'local';
6+
var transportListen = require('dop-transports').listen[transportName];
7+
var transportConnect = require('dop-transports').connect[transportName];
8+
9+
dop.env = 'SERVER';
10+
dopClient1.env = 'CLIENT1';
11+
dopClient2.env = 'CLIENT2';
12+
13+
var server = dop.listen({transport:transportListen})
14+
var client1 = dopClient1.connect({transport:transportConnect, listener:server})
15+
var client2 = dopClient2.connect({transport:transportConnect, listener:server})
16+
17+
18+
19+
20+
21+
var objServer = dop.register({
22+
number:1,
23+
subobject:{},
24+
arr:[]
25+
})
26+
dop.onsubscribe(function(){
27+
return objServer;
28+
})
29+
30+
31+
32+
33+
34+
// // setBroadcastFunction(object, 'namefunction')
35+
36+
// test('BROADCASTING TO CLIENTS', function(t) {
37+
38+
client1.subscribe().into({subobject:{broadcast:function(a,b){return a+b}}})
39+
.then(function(obj) {
40+
return client2.subscribe().into({subobject:{broadcast:function(a,b){return a*b}}})
41+
})
42+
.then(function(obj) {
43+
44+
// var collector = dop.collect();
45+
objServer.number = 25;
46+
objServer.arr = [1,2,3];
47+
// collector.emitAndDestroy();
48+
49+
// var promises = objServer.subobject.broadcast(2,5);
50+
// t.equal(Array.isArray(promises), true, 'Promises is array');
51+
// t.equal(promises.length, 2, 'Promises are two promises');
52+
// t.equal(promises[0] instanceof Promise, true, 'First promise is instanceof Promise');
53+
// Promise.all(promises)
54+
// .then(function(values){
55+
// t.equal(values[0], 7, 'First value must be 2+5=7');
56+
// t.equal(values[0], 7, 'Second value must be 2*5=10');
57+
// t.end()
58+
// })
59+
// // .catch(function(err){
60+
// // console.log( err );
61+
// // })
62+
})
63+
// })
64+
65+
66+
// // More test todo

0 commit comments

Comments
 (0)