Sampling/fr

Explication du code
Attributs du modèle

Comme pour le modèle Generator, mDuration est un paramètre qui va nous permettre de stocker le pas de temps entre la réception d'un évènement et sa réplication. L'attribut mSampling stockera l'entrée à répliquer. Dans notre exemple, une entrée est représentée par un réel. mSigma nous permettra de calculer le temps restant entre chaque évènement reçu pour continuer à répliquer la première entrée reçue. mState servira à nous situer dans l'état du modèle : s'il est en attente d'une entrée ou s'il est en train de la répliquer. Et enfin mLastTime, toujours comme dans le modèle Generator servira à stocker la date du dernier évènement.

Constructeur / Destructeur

Ce sont exactement les mêmes que pour le modèle Generator, le constructeur récupère le paramètre duration. Et le destructeur est vide mais obligatoire.

Init

On initialise l'attribut mSigma au paramètre duration, mLastTime à la date de départ. Au début de la simulation, nous sommes en attente d'une entrée, on initialise donc mState à PASSIVE. Enfin on retourne l'infini pour attendre indéfiniment jusqu'à la réception d'une entrée.

Output

Nous voulons répliquer ce que nous avons reçu en entrée. Pour cela, nous commençons par créer un event nommé event qui sera envoyé sur le port "out". Nous ajoutons ensuite à ce nouvel événement l'attribut mSampling (qui contient ce qui doit être répliqué) et qui sera envoyé sur le port "out". Enfin, nous ajoutons l'événement à ce qui sera envoyé par la fonction de sortie.

TimeAdvance (Ta)

Si nous sommes en train d'attendre un événement en entrée du modèle, nous attendons indéfiniment. Si nous sommes en train de répliquer une entrée (état "RESPOND"), nous retournons le temps restant avant l'envoi de l'entrée répliquée. Si nous somme dans l'état "CONFLICT" (Nous recevons une nouvelle entrée en même temps que nous voulons en retourner une) nous retournons 0 afin d'envoyer directement la nouvelle entrée mise à jour.

InternalTransition

La transition interne n'a lieu que lors de la réplication de l'entrée. On met mLastTIme à time pour pouvoir mettre mSigma à jour si la prochaine transition est une externalTransition. On remet mSigma à mDuration et on remet mState à "PASSIVE" car on repart pour une nouvelle attente d'une entrée.

ExternalTransition