Como funciona
O controle de concorrência no gerenciador de arquivos se baseia no timestamp da data de modificação do arquivo. Quando o usuário edita o arquivo o sistema atualiza a data automaticamente de 20 em 20 segundos. Quando a data for mais recente que o ultimo minuto ninguém mais além daquele usuário pode editar o arquivo. Como na figura abaixo:
Sugestão de implementação de edição compartilhada
Esta implementação não existe ainda, mas a documentação sugere uma implementação:
- O usuário requisita a edição do arquivo.
- O sistema gera uma versão intermediária em memória (possivelmente sessão do usuário) e gera um identificador e passa para o usuário.
- O usuário edita e envia o arquivo editado.
- O sistema verifica se o identificador é o mesmo, gera uma representação de diferença (diff) entre a versão intermediária e o arquivo editado do usuário.
- O sistema efetua o commit no sistema de arquivos.
- O sistema atualiza a versão intermediária, gera um novo identificador e envia para o usuário.
Esta representação de diferença (diff) deve levar em consideração somente o pedaço diferente e não o arquivo todo. Sendo assim um pedaço do arquivo que esteja diferente da versão intermediária será atualizada no passo final.
Se a função de commit do sistema for implementada de forma a não destruir informações já existentes (aplicar o diff corretamente) vários usuários poderão editar 1 único arquivo ao mesmo tempo.