sync.markdown
49 lines
| 2.0 KiB
| text/x-markdown
|
MarkdownLexer
/ docs / sync.markdown
|
r758 | # INTRO # | ||
This document discribes the server sync protocol. | ||||
|
r784 | # PURPOSE # | ||
This protocol will be used to share the models (currently imageboard posts) | ||||
across multiple servers. The main differnce of this protocol is that the node | ||||
can specify what models it wants to get and from whom. The nodes can get | ||||
models from a specific server, or from all except some specific servers. Also | ||||
the models can be filtered by timestamps or tags. | ||||
|
r758 | # DRAFT PROTOCOL DESCRIPTION # | ||
The node requests other node's changes list since some time (since epoch if | ||||
this is the start). The other node sends a list of post ids or posts in the | ||||
XML or JSON format. | ||||
Protocol version is the version of the sync api. Model version is the version | ||||
of data models. If at least one of them is different, the sync cannot be | ||||
performed. | ||||
The node signs the data with its key. The receiving node saves the key at the | ||||
first sync and checks it every time. If the key has changed, the info won't be | ||||
saved from the node (or the node id must be changed). | ||||
|
r759 | |||
|
r784 | Each node can have several keys. Nodes can have shared keys to serve as a pool | ||
(several nodes with the same key). | ||||
|
r759 | |||
Each post has an ID in the unique format: node-id/post-id | ||||
|
r778 | |||
All requests pass a request type, protocol and model versions and a list of | ||||
optional arguments used for filtering. | ||||
|
r786 | Each protocol has its own version. Version consists of 2 numbers: first is | ||
incompatible version (1.3 and 2.0 are not compatible and must not be in sync) | ||||
and the second one is minor and compatible (for example, new optional field | ||||
is added which will be igroned by those who don't support it yet). | ||||
|
r778 | # REQUESTS # | ||
Request types: | ||||
* pull - pull the desired model ids | ||||
* get - get models by ids | ||||
|
r784 | * put - give a model to the given node (you have no guarantee the node takes | ||
it, consider you are just advising the node to take your post. This request | ||||
type is useful in pool where all the nodes try to duplicate all of their data | ||||
across the pool. | ||||
|
r782 | |||
# RESPONSES # | ||||
* not supported - request is not supported | ||||
* success - request was successfull | ||||
* error - unexpected error | ||||