flok 0.0.85 → 0.0.86
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|