flok 0.0.85 → 0.0.86
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/kern/pagers/pg_sockio.js +9 -2
- data/lib/flok/version.rb +1 -1
- data/spec/kern/assets/vm/pg_sockio/write2d.rb +39 -0
- data/spec/kern/vm_sockio_pager_spec.rb +21 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 79132faeb16d0bf4de2723307d51313d97186e88
|
4
|
+
data.tar.gz: b3e8e4d92cf40227136cb9be54202f627041af19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 43c7946e65a229ed70b1d6658dd93a86776385e6cd57f461a4debc97b9e82adb06899cfaac71b63608622b6381586c95a471f1ef23e2c378cacbb7403522fb0b
|
7
|
+
data.tar.gz: 3a6ad4ba5bbbe9bdf504f1128ac23e04751cae4431baea66f31c8890d268ffa6000018ad22708e958cccb949804e20b01dc5d04077b7d7dc262a435a98088c0b
|
@@ -20,7 +20,8 @@
|
|
20
20
|
}
|
21
21
|
|
22
22
|
//Mark page as synced if it contains no changes, we don't need to check base
|
23
|
-
//here because if it has base, it has __changes as well
|
23
|
+
//here because if it has base, it has __changes as well, we're using einfo
|
24
|
+
//at this point, because it was rebased
|
24
25
|
if (einfo.page.__changes === undefined) {
|
25
26
|
vm_pg_unmark_needs_sync(pg_sockio<%= i %>_ns, einfo.page._id)
|
26
27
|
}
|
@@ -118,7 +119,13 @@
|
|
118
119
|
var page = vm_cache[pg_sockio<%= i %>_ns][page_id];
|
119
120
|
//Clone page and send a copy to the server
|
120
121
|
var copied = vm_copy_page(page);
|
121
|
-
|
122
|
+
|
123
|
+
//Depending on whether the page is based, send the changes id
|
124
|
+
if (page.__base !== undefined) {
|
125
|
+
var info = {page: copied, changes: page.__base.__changes, changes_id: page.__base.__changes_id};
|
126
|
+
} else {
|
127
|
+
var info = {page: copied, changes: page.__changes, changes_id: page.__changes_id};
|
128
|
+
}
|
122
129
|
SEND("net", "if_sockio_send", pg_sockio<%= i %>_bp, "write", info);
|
123
130
|
}
|
124
131
|
<% end %>
|
data/lib/flok/version.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
controller :my_controller do
|
2
|
+
services :vm
|
3
|
+
|
4
|
+
on_entry %{
|
5
|
+
read_res_params = [];
|
6
|
+
|
7
|
+
/////////////////////////////////////////////////////////////////////////
|
8
|
+
//Create a page and commit it to the sockio cache (cheating)
|
9
|
+
//This way we know a commit should be performed when a write goes through
|
10
|
+
/////////////////////////////////////////////////////////////////////////
|
11
|
+
var page = vm_create_page("test");
|
12
|
+
page.entries.push(
|
13
|
+
{"_id": "test", "_sig": "test", "val": "test"}
|
14
|
+
);
|
15
|
+
page.__changes_id = "my_changes_id";
|
16
|
+
page.__changes = [];
|
17
|
+
vm_reindex_page(page);
|
18
|
+
vm_rehash_page(page);
|
19
|
+
vm_cache["sockio"]["test"] = page;
|
20
|
+
/////////////////////////////////////////////////////////////////////////
|
21
|
+
}
|
22
|
+
|
23
|
+
action :my_action do
|
24
|
+
on_entry %{
|
25
|
+
var page = vm_create_page("test");
|
26
|
+
|
27
|
+
var info = {
|
28
|
+
ns: "sockio",
|
29
|
+
page: page,
|
30
|
+
};
|
31
|
+
|
32
|
+
Request("vm", "write", info);
|
33
|
+
}
|
34
|
+
|
35
|
+
on "read_res", %{
|
36
|
+
read_res_params.push(JSON.parse(JSON.stringify(params)));
|
37
|
+
}
|
38
|
+
end
|
39
|
+
end
|
@@ -854,6 +854,27 @@ RSpec.describe "kern:sockio_pager" do
|
|
854
854
|
expect(res[2]["changes_id"].class).to eq(String)
|
855
855
|
end
|
856
856
|
|
857
|
+
it "Does write to sockio interface when a page is requested to be written with changes with a page and changes (and the cached page is based)" do
|
858
|
+
ctx = flok_new_user File.read('./spec/kern/assets/vm/pg_sockio/write2d.rb'), File.read("./spec/kern/assets/vm/pg_sockio/config.rb")
|
859
|
+
dump = ctx.evald %{
|
860
|
+
//Call embed on main root view
|
861
|
+
dump.base = _embed("my_controller", 0, {}, null);
|
862
|
+
|
863
|
+
//Drain queue
|
864
|
+
int_dispatch([]);
|
865
|
+
|
866
|
+
dump.vm_cache = vm_cache;
|
867
|
+
}
|
868
|
+
|
869
|
+
#The kernel should have signaled to the driver to send a sockio request with the changes
|
870
|
+
@driver.ignore_up_to "if_sockio_send", 1
|
871
|
+
res = @driver.get "if_sockio_send", 1
|
872
|
+
expect(res[2]["page"]["_id"]).to eq("test")
|
873
|
+
expect(res[2]["changes"]).to eq([])
|
874
|
+
expect(res[2]["changes_id"]).to eq("my_changes_id")
|
875
|
+
end
|
876
|
+
|
877
|
+
|
857
878
|
it "Does write to sockio interface when a page is requested to be written without changes with a page: and no changes: field" do
|
858
879
|
ctx = flok_new_user File.read('./spec/kern/assets/vm/pg_sockio/write3.rb'), File.read("./spec/kern/assets/vm/pg_sockio/config.rb")
|
859
880
|
dump = ctx.evald %{
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flok
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.86
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- seo
|
@@ -1284,6 +1284,7 @@ files:
|
|
1284
1284
|
- spec/kern/assets/vm/pg_sockio/watch3.rb
|
1285
1285
|
- spec/kern/assets/vm/pg_sockio/write.rb
|
1286
1286
|
- spec/kern/assets/vm/pg_sockio/write2.rb
|
1287
|
+
- spec/kern/assets/vm/pg_sockio/write2d.rb
|
1287
1288
|
- spec/kern/assets/vm/pg_sockio/write3.rb
|
1288
1289
|
- spec/kern/assets/vm/service0.rb
|
1289
1290
|
- spec/kern/assets/vm/service_controller0.rb
|
@@ -2238,6 +2239,7 @@ test_files:
|
|
2238
2239
|
- spec/kern/assets/vm/pg_sockio/watch3.rb
|
2239
2240
|
- spec/kern/assets/vm/pg_sockio/write.rb
|
2240
2241
|
- spec/kern/assets/vm/pg_sockio/write2.rb
|
2242
|
+
- spec/kern/assets/vm/pg_sockio/write2d.rb
|
2241
2243
|
- spec/kern/assets/vm/pg_sockio/write3.rb
|
2242
2244
|
- spec/kern/assets/vm/service0.rb
|
2243
2245
|
- spec/kern/assets/vm/service_controller0.rb
|