CCmdQueue, classe

La CCmdQueue classe est une classe de base qui fournit une file d’attente d’objets CDeferredCommand et des fonctions membres pour ajouter, supprimer, vérifier l’État et appeler les commandes mises en file d’attente. Un CCmdQueue objet fait partie d’un objet qui implémente des méthodes IQueueCommand . Le gestionnaire de graphes de filtre implémente les méthodes IQueueCommand afin que les applications puissent mettre les commandes en file d’attente dans le graphique de filtre. Les filtres qui implémentent l’interface IQueueCommand utilisent directement cette classe. Si vous souhaitez utiliser des objets CDeferredCommand , votre file d’attente doit être dérivée de cette classe.

Il existe deux modes de synchronisation : grossiste et précis. En mode grossiste, l’application attend jusqu’à ce qu’une heure spécifiée arrive, puis exécute la commande. En mode exact, l’application attend que le traitement commence sur l’exemple qui s’affiche à l’heure, puis exécute la commande. Le filtre détermine celui qu’il doit implémenter. Le gestionnaire de graphes de filtre implémente toujours le mode grossiste pour les commandes mises en file d’attente au niveau du gestionnaire de graphique de filtre.

Si vous souhaitez une synchronisation grossière, vous souhaiterez probablement attendre qu’une commande soit en cours, puis l’exécuter. Pour ce faire, vous pouvez appeler CCmdQueue :: GetDueCommand. Si vous avez plusieurs éléments à attendre, récupérez le descripteur d’événement à partir de CCmdQueue :: GetDueHandle , puis appelez CCmdQueue :: GetDueCommand quand ce est signalé. le temps de flux est avancé uniquement entre les appels aux fonctions membres CCmdQueue :: Run et CCmdQueue :: EndRun . Il n’y a aucune garantie que si le descripteur est défini, une commande est prête. Chaque fois que l’événement est signalé, appelez la fonction membre GetDueCommand (probablement avec un délai d’expiration de zéro); Cela peut retourner E _ Abort si aucune commande n’est prête.

Si vous souhaitez une synchronisation précise, appelez la fonction membre CCmdQueue :: GetCommandDueFor et transmettez les exemples que vous allez traiter en tant que paramètre. Cela retourne ce qui suit :

  • Commande de flux de temps due à ou avant cette heure de flux.
  • Commande au moment de la présentation due à ou avant la présentation du temps de flux. Procédez ainsi uniquement entre les fonctions membres CCmdQueue :: Run et CCmdQueue :: EndRun , car en dehors de ce, le mappage du temps de flux à l’heure de présentation n’est pas connu.
  • Toute commande de présentation en attente.

Si vous souhaitez une synchronisation précise des exemples qui peuvent être traités en mode suspendu, vous devez utiliser des commandes en continu.

Dans tous les cas, les commandes restent mises en file d’attente jusqu’à ce qu’elles soient appelées ou annulées. Le paramètre et la réinitialisation du descripteur d’événement sont gérés entièrement par cet objet de file d’attente.

Membres de données protégés Description
m _ bRunning Indicateur d’État en cours d’exécution ; Affectez la valeur true lors de l’exécution de.
m _ dwAdvise Identificateur de notification de l’horloge de référence (zéro si aucune notification n’est en suspens).
m _ evDue Définit l’heure d’échéance des commandes.
m _ listPresentation Stocke les commandes mises en file d’attente au moment de la présentation.
m _ listStream Stocke les commandes mises en file d’attente dans le temps de flux.
_verrou m Protège l’accès aux listes.
m _ pClock Horloge de référence actuelle.
m _ StreamTimeOffset Contient l’offset de temps de flux lorsque m _ bRunning a la valeur true.
m _ StreamTimeOffset Contient l’offset de temps de flux lorsque m _ bRunning a la valeur true.
Fonctions de membre Description
CCmdQueue Construit un objet CCmdQueue .
CheckTime Détermine si une heure donnée est due.
GetDueHandle Récupère le handle d’événement qui sera signalé.
Fonctions membres substituables Description
EndRun Bascule en mode arrêté ou suspendu.
GetCommandDueFor Récupère une commande différée planifiée à une heure spécifiée.
GetDueCommand Récupère un pointeur vers la commande suivante qui est due.
Insérer Ajoute l’objet CDeferredCommand à la file d’attente.
Nouveau Initialise une commande à exécuter et retourne un nouvel objet CDeferredCommand .
Supprimer Supprime l’objet CDeferredCommand de la file d’attente.
Exécuter Bascule en mode exécution.
SetSyncSource Définit l’horloge utilisée pour le minutage.
SetTimeAdvise Configure un événement de minuterie avec l’horloge de référence.