Verrous de document

Protocole de verrouillage de document

Pour demander un verrou de document pour les applications basées sur ACP, le gestionnaire TSF appelle ITextStoreACP :: RequestLock. Pour les applications basées sur l’ancre, le gestionnaire TSF appelle ITextStoreAnchor :: RequestLock. L’application accorde le verrou de document en appelant ITextStoreACPSink :: Onlockgranted (applications basées sur ACP) ou ITextStoreAnchorSink :: Onlockgranted (applications basées sur une ancre) à l’intérieur de RequestLock. Le verrou est uniquement valide pendant l’appel Onlockgranted . Quand Onlockgranted retourne, le document est considéré comme déverrouillé.

Types de verrous de document

Il existe deux types de verrous de document, en lecture seule et en lecture/écriture. Un verrou en lecture seule permet au responsable de lire le texte, mais il ne peut pas modifier ou insérer du texte. Un verrou en lecture/écriture permet au gestionnaire de lire, modifier et insérer du texte. Un verrou en lecture seule est demandé en spécifiant le saut de la variable TS _ _ lu dans dwFlags. Un verrou en lecture/écriture est demandé en spécifiant TS _ LF _ ReadWrite dans dwFlags.

Requêtes asynchrones et synchrones

Une demande de verrouillage peut être synchrone ou asynchrone. Le gestionnaire demande un verrou synchrone à l’aide de _ l' _ indicateur de synchronisation TS LF dans dwFlags. Si cet indicateur n’est pas présent, la demande est asynchrone.

Octroi du verrou

Quand RequestLock est appelé, l’application doit déterminer si le document est actuellement verrouillé. Si le document n’est pas verrouillé et qu’il n’existe aucune autre raison pour refuser le verrou, l’application doit définir phrSession sur S _ OK et retourner s _ OK.

Si le document est verrouillé et que la demande de verrou est synchrone, l’application doit définir phrSession sur TS _ E _ Synchronous et retourner _ OK. Cela indique qu’une demande synchrone ne peut pas être accordée.

Si le document est verrouillé et que la demande de verrou est asynchrone, l’application doit mettre la demande en file d’attente, définir phrSession sur TS _ S _ Async et retourner s _ OK. Lorsque le document devient disponible, l’application doit supprimer la demande de la file d’attente et appeler Onlockgranted. Cette mise en file d’attente des demandes de verrou est facultative. une application doit prendre en charge un scénario. Si le document a un verrou en lecture seule, la nouvelle demande de verrou est en lecture/écriture et la demande est asynchrone, l’application a appelé Onlockgranted , ce qui a provoqué un appel réentrant à RequestLock. L’application doit définir phrSession sur TS _ s _ Async et retourner s _ OK. Une fois que l’appel à Onlockgranted a été retourné, l’application doit traiter la demande de mise à niveau en appelant à nouveau Onlockgranted avec TS _ LF _ ReadWrite.

Application de verrous

L’application doit s’assurer que le type de verrou approprié existe avant d’autoriser l’accès au document. Par exemple, l’application doit vérifier qu’un document a au moins un verrou en lecture seule avant d’autoriser ITextStoreACP :: gettext ou ITextStoreAnchor :: gettext à continuer. Si le verrou approprié n’existe pas, l’application doit retourner TF _ E _ NOLOCK.

Magasins de texte

ITextStoreACP :: RequestLock

ITextStoreACPSink :: OnLockGranted

ITextStoreACP :: GetText

ITextStoreAnchor :: RequestLock

ITextStoreAnchorSink :: OnLockGranted

ITextStoreAnchor :: GetText