SmartSync - Network Enabled File Synchronizer |
---|
The protocol of SmartSync uses one single HTTP post request for synchronization. To be independent of the architecture, no serialized java objects are used for communication. The following sections describe the applicational protocol, i.e. the structure of the data stream of request and response.
The overall structure of the protocol is a list of commands in the request and in the
response. One single command is coded in latin1 with a end of line sequence of \n\r. Each
command consists of a single line command verb, an unordered list of parameters (each on
one line) followed by an empty line and an optional content stream. The command handler
must be able to read to the end of the content stream, where the next command verb starts.
The last command in the stream is always a command with the verb "done".
A command parameter consists of the name of the parameter followed by ":",
followed by the value of the parameter. Here comes an example of a list of two commands
terminated with the done command:
example-command content-length:6 color:red foobarexample-command color:red content-length:3 foodone
Notice that "done" s a complete command with (possibly) no parameter. It has two end-of-line sequences after the command verb, one that terminates the verb and one that terminates the empty parameter list.
Files are always named with its path, which is relative to a document root (e.g. reference directory or work directory). The separation character of the path elements is '/' independent of the platform. Directory references like '.' or '..' are illegal. Path elements cannot contain any of the following characters:
/ \ : * ? " >
< |
Depending on the platform, more illegal characters may be added. Files that are directly located in a document root have no path. The following examples are legal file names:
a .b a b.txt d/e f/g.txt
The easiest way to describe a request is to start with an example request:
properties task-list-flag:true compression-flag:false work-files file-count:5 AbrechnungApotheke.xls|25088|13edcb3f|1032250516000 bookTOC.pdf|91988|657e4836|1033416916000 rfc/rfc1738.html|56303|8b787f89|908121844000 rfc/rfc1867.html|29154|462eec8|1045144660284 rfc/rfc1918.html|23988|b09c89d5|1045144805904 archive-files file-count:5 AbrechnungApotheke.xls|25088|13edcb3f|1032250516000 Arbeitsvertag.doc|38400|f3ae5807|1037604357735 adress.doc|429|7e2d261e|1025855156000 rfc/rfc1738.html|56303|8b787f89|908121844000 rfc/rfc1867.html|29200|b145bd87|908121844000 done
The following table describes the request commands.
Command Verb | Parameter / Stream | Description |
---|---|---|
properties |
task-list-flag |
Specifies true or false , specifies
whether the task summary should be included or not. |
compression-flag |
Specifies true or false , specifies
whether gzip compression should be used or not. If this flag is set to true ,
the following commands of the request and the whole response is compressed using a
gzip stream. |
|
Stream | No stream data | |
work-files |
file-count |
Specifies the number of work file definitions contained in the following stream. |
Stream | A list of work file definitions. One single file definition
consists of the following fields separated by a "|"
|
|
archive-files |
file-count |
Specifies the number of archive file definitions contained in the following stream. |
Stream | A list of archive file definitions. One single file
definition consists of the following fields separated by a "|"
|
|
done |
Stream | No stream data |
Here is a possible response to the previous request:
summary task-count:5 task-list-flag:true transfer-length:19 transfer-count:2 delete|AbrechnungApotheke.xls|-1 resume-create|rfc/rfc1918.html|16 resume-keep|rfc/rfc1867.html|-1 create|foo.txt|3 keep|adress.doc|-1 delete file-name:AbrechnungApotheke.xls resume-create last-modified:908121844000 append-length:16 file-name:rfc/rfc1918.html </body></HTML> resume-keep last-modified:908121844000 file-name:rfc/rfc1867.html create last-modified:1045144549054 file-length:3 file-name:foo.txt fookeep last-modified:1025855156000 file-name:adress.doc done
The following table describes all response commands. The sequence of the commands must follow the given sequence:
Command Verb | Parameter / Stream | Description |
---|---|---|
summary |
task-count |
Specifies the total number of tasks that will follow. This parameter defines also the end of the stream content. |
task-list-flag |
Specifies true or false ,
whether a task summary list will follow or not. |
|
transfer-length |
Specifies the clear number of byte that must be transferred for this update. This parameter is only intended for monitoring purposes. | |
transfer-count |
Specifies the number of tasks that cause a clear data transfer. This parameter is only intended for monitoring purposes. | |
Stream | If the task-list-flag is set to true ,
the stream contains a list of task definitions. One single task definition consists of the
following fields separated by a "|"
|
|
delete |
file-name |
Defines the path and name of the file that must be deleted from the work directory. |
Stream | No stream data. | |
resume-create |
file-name |
Defines the path and name of the file. |
last-modified |
Defines the last modification date of the file coded in decimal notation representing the number of ms after 1.1.1970 00:00. | |
append-length |
Defines number of byte that must be appended to the file. | |
Stream | Contains the transfer data to resume the creation of the file. | |
resume-keep |
file-name |
Defines the path and name of the file whose rest must be copied from the archive directory to the work directory. |
last-modified |
Defines the last modification date of the file coded in decimal notation representing the number of ms after 1.1.1970 00:00. | |
Stream | No stream data | |
create |
file-name |
Defines the path and name of the file to be created |
last-modified |
Defines the last modification date of the file coded in decimal notation representing the number of ms after 1.1.1970 00:00. | |
file-length |
Defines the length of the file in byte. | |
Stream | Contains the transfer data for the creation of the file. | |
keep |
file-name |
Defines the path and name of the file that must be copied from the archive directory to the work directory. |
last-modified |
Defines the last modification date of the file coded in decimal notation representing the number of ms after 1.1.1970 00:00. | |
Stream | No stream data | |
done |
Stream | No stream data |
Copyright © 2003 NetCat AG. All rights reserved.