Initially, in the Remote View Tab, the Remote Categories and Files list is empty.
If we click on Show Remote Categories button, the client sends a getCategories request to
the server, and this view gets populated with the remote categories.
If we then double click on the same category in both the local and remote category lists,
the client retrieves its files from that category and populates the local list. It also
sends to the server a getFiles request, which results in a reply with the files in that
category on the server, then used to populate the remote list.
If we then click the Show Synch button, the client sends a synch request to the server.
That request contains a list of the local files in the selected category.
The server then compares the incoming file list with its files in the same category.
It sends back two replies, one with the files in the server category not on the client's list,
implying that the client should retrieve them. The second reply message has a list of the
files in the client's list not on the server, implying the client should send them.
The RepoClient uses those two replies to mark files in the local list that should be sent
to the server, and mark files in the remote list that should be retrieved from the server.
Note that the client is not obligated to do that. It may be that the user has no interest
in some of the files on the server, in that category, and may feel that the files it has
in its local storage are not yet ready for prime-time, and should not be sent to the server.
However, usually, the client will manually synchronize both sets of files, simply by
double clicking on a marked file. That sends either a getFile request, or simply sends
to the server the clicked on file. Note that if the client double clicks on an unmarked
file in either the remote or local lists, nothing happens.
In the screenshot, above, you see the results of the user clicking on the Show Synch button,
e.g., two messages are sent to the server, one to get the list of local files needed by the
server - synchRemote - and one to get the list of remote files needed by the client - synchLocal
Double clicking on a "get from server" results in a sendFile message, the file is transferred
to the local client, and the mark "get from server" is removed.
Double clicking on a "send to server" file results in client sending an acceptFile message, and transmission
of the file from client to server.