Commit graph

270 commits

Author SHA1 Message Date
Nicholas Kariniemi
5ee40a6471 Use version numbers instead of timestamps
Also:
- Don't acknowledge changes sent from the server to the client.
- Only send one message at a time to the server.

All of these changes bring this more in line with the differential sync paper.
2014-10-25 19:31:14 +03:00
Nicholas Kariniemi
79e64596ae Add back sync integration tests 2014-10-21 23:26:27 +03:00
Nicholas Kariniemi
8fe22b9a52 Use timestamp tags instead of hashes
- Hashing was slow and we weren't using the hash properties much anyway
2014-10-21 23:25:42 +03:00
Nicholas Kariniemi
19ca650078 Fix tests - sync integration tests commented out 2014-10-19 11:49:02 +03:00
Nicholas Kariniemi
feae5d8135 Workaround to make reloaded workflow work with cljx 2014-10-19 11:26:07 +03:00
Nicholas Kariniemi
9591e9fd93 Rename state <--> sync namespaces 2014-10-19 10:53:14 +03:00
Nicholas Kariniemi
e14b3d2a29 Optimization: don't set grub/recipe state if state is unchanged 2014-10-15 22:51:53 +03:00
Nicholas Kariniemi
78d5617356 Keep state history with state in one atom 2014-10-15 22:14:32 +03:00
Nicholas Kariniemi
e5309fcd69 Correct use of swap! 2014-10-15 21:26:28 +03:00
Nicholas Kariniemi
0bf8344c62 Reset state on full sync 2014-10-15 21:22:53 +03:00
Nicholas Kariniemi
96dd93309d Merge branch 'master' of github.com:nicholaskariniemi/grub 2014-10-15 21:06:11 +03:00
Nicholas Kariniemi
8dbb410667 Bounce favicon requests 2014-10-15 21:05:07 +03:00
Nicholas Kariniemi
fd249cefca Use swap! in diff handling to update state
- Ensures state updates always use the current state as a basis.
2014-10-15 14:46:12 +03:00
Nicholas Kariniemi
dd5bf7a53a Clean up state loop 2014-10-15 11:07:55 +03:00
Nicholas Kariniemi
f496fb51e5 Pull state history into state handler loop
- This is incidental complexity and other code doesn't need to know
  about it
2014-10-14 22:49:04 +03:00
Nicholas Kariniemi
7ada33bdfc Make server, client agent APIs more similar 2014-10-13 22:02:32 +03:00
Nicholas Kariniemi
b5a668e6ee Push state history into state handling 2014-10-13 21:54:52 +03:00
Nicholas Kariniemi
dffdc7cabb Remove init-server from state handling 2014-10-13 21:27:24 +03:00
Nicholas Kariniemi
a367d5cb25 Comment out integration test 2014-10-13 21:27:07 +03:00
Nicholas Kariniemi
8f5814e07e Simplify state functions 2014-10-13 20:48:13 +03:00
Nicholas Kariniemi
5fd54b62e6 Make state syncing code more explicit 2014-10-12 23:15:40 +03:00
Nicholas Kariniemi
64b1bb05a7 Start client code like server side 2014-10-12 22:57:00 +03:00
Nicholas Kariniemi
73cf89f9d5 Move state handling atoms to global system var 2014-10-12 13:41:19 +03:00
Nicholas Kariniemi
7b3b509eaf Use Stuart Sierra reloaded workflow 2014-10-12 13:29:48 +03:00
Nicholas Kariniemi
8ef1522c1e Remove atoms from server,db so app can be reloaded 2014-10-12 12:56:57 +03:00
Nicholas Kariniemi
ec27d58e31 Drop compojure dependency
It was hardly used and makes control flow, reloaded workflow more difficult.
2014-10-12 12:25:15 +03:00
Nicholas Kariniemi
b9de047b7a Merge branch 'master' of https://github.com/nicholaskariniemi/grub 2014-10-10 19:56:04 +00:00
Nicholas Kariniemi
066d8aa615 Remove unused Procfile, delete generate js on deploy 2014-10-10 19:56:01 +00:00
Nicholas Kariniemi
58373496f0 Use transit for communication for possible speed improvements 2014-10-10 22:48:39 +03:00
Nicholas Kariniemi
75b58d58a3 Add thread-safe printer 2014-10-10 22:15:49 +03:00
Nicholas Kariniemi
fd1f9bddef Don't swap in new client states as they come, only in handler 2014-10-10 22:15:28 +03:00
Nicholas Kariniemi
16b61063ec Update tests, client also sends ACK messages 2014-10-10 22:09:38 +03:00
Nicholas Kariniemi
87b88f9340 Update unit tests to not use core async 2014-10-10 22:02:51 +03:00
Nicholas Kariniemi
e581f34afc Add more tests for history states 2014-10-10 20:58:04 +03:00
Nicholas Kariniemi
421a921fd4 Convert sync tests to midje 2014-10-10 20:48:08 +03:00
Nicholas Kariniemi
07e85a4d30 Only update edited recipes if the recipe changed 2014-10-10 20:39:47 +03:00
Nicholas Kariniemi
14427e89d9 Return "out" event instead of directly pushing out event 2014-10-10 20:03:53 +03:00
Nicholas Kariniemi
63153ecc5d Pull states atom out of event handling 2014-10-10 19:56:22 +03:00
Nicholas Kariniemi
af7c9535df Rename handle-message -> handle-event 2014-10-10 19:41:52 +03:00
Nicholas Kariniemi
e833a48034 Correct typo 2014-10-10 19:36:54 +03:00
Nicholas Kariniemi
604a1ff1d8 Pass in single event to event handler 2014-10-10 19:36:45 +03:00
Nicholas Kariniemi
88d1a0db1a Rename in, out -> <remote, >remote 2014-10-10 19:06:28 +03:00
Nicholas Kariniemi
bef0e8d4e7 Separate event handling into handler methods 2014-10-10 19:03:33 +03:00
Nicholas Kariniemi
52ce9ffb42 Use different events for full sync, full sync request 2014-10-10 19:03:22 +03:00
Nicholas Kariniemi
0f06d21767 Tag local state changes
to avoid passing remote changes back to remote
2014-10-10 18:45:51 +03:00
Nicholas Kariniemi
423b962d2c View takes in state changes, pushes out state changes 2014-10-10 18:35:22 +03:00
Nicholas Kariniemi
24a077b277 Update Clojure, ClojureScript, Om, and core.async 2014-10-10 18:00:13 +03:00
Nicholas Kariniemi
d6670f4157 Update React: 0.11.1 -> 0.11.2 2014-10-10 17:52:27 +03:00
Nicholas Kariniemi
4b743f420b Reorganize sync tests into integration 2014-10-06 22:18:39 +03:00
Nicholas Kariniemi
12ac165f24 Store max 20 history states, reset on client when server ACKs 2014-10-06 22:14:40 +03:00