Foxmarks: Algorithme de premier niveau
From Foxcloud Wiki
Voici ce qui se passe lorsque la synchronisation débute soit lorsque l'utilisateur a cliqué sur le bouton "Synchroniser maintenant", soit lorsqu'il a appuyé sur la touche de raccourci correspondante, soit lorsqu'une synchronisation automatique est invoquée.
Tout d'abord, nous tentons un téléchargement conditionnel du fichier distant synchronisé. Il y a quatre réponses possibles.
- J'ai trouvé le fichier.
- Le fichier n'est pas modifié.
- Impossible de trouver le fichier.
- Quelques autres erreurs réseaux.
Ce qui se passe par après dépend principalement de ce qu'il y a eu ou pas synchronisation avant. Prenons, tout d'abord , le cas où nous n'avons pas synchronisé auparavant.
- J'ai trouvé le fichier : invoque la boîte de dialogue de "synchronisation initiale" afin d'obtenir les préférences de l'utilisateur pour la procédure.
- Le fichier n'est pas modifié : Cela ne devrait pas se passer. Nous ne devrions jamais avoir cette réponse dans ce contexte.
- Impossible de trouver le fichier : copie les données locales vers le serveur distant en arrière-plan.
- Autres erreurs : rapporter les erreurs à l'utilisateur et stopper.
Si nous avons synchronisé auparavant :
- J'ai trouvé le fichier : la version distante est probablement "sale" (modifiée). Procéder à la synchronisation. Écrire les résultats uniquement si la version locale était "sale". Copier en local uniquement si la version distante est "sale".
- Le fichier n'est pas modifié : la version distante est "propre". Si la version locale est également "propre", sortir. Si la version locale est "sale", la copier vers le serveur distant.
- Il y a ici un problème. Si nous copions la version locale vers le serveur distant, tout ce qui se trouve sur le serveur deviendra "sale". Idéalement, nous ne voulons salir que les données qui étaient sales en local. Pour cela, nous avons à modifier notre routine de copie légèrement.
- Fait.
- Impossible de trouver le fichier : avertir l'utilisateur. S'il l'accepte, copier la version locale vers le serveur distant.
- Autre erreur : rapporter l'erreur et stopper.

