Utilisez les appels de fonction et méthodes de conseiller suivants dans vos conseillers personnalisés.
N'oubliez pas que les conseillers personnalisés ont besoin de toutes les routines
nécessaires. Ils doivent contenir les méthodes de classe de base suivantes :
- Une routine de constructeur. Le constructeur appelle le constructeur de classe de base.
- Une méthode ADV_AdvisorInitialize. Cette méthode permet d'exécuter des étapes supplémentaires après que la classe de base a terminé son initialisation.
- Une routine getLoad. La classe de base du conseiller ouvre le socket. La fonction getLoad doit simplement émettre les demandes
d'envoi et de réception appropriées pour exécuter le cycle de conseil.
Constructeur (fourni par la base du conseiller)
public <advisor_name> {
String sName;
String sVersion;
int iDefaultPort;
int iInterval;
String sDefaultLogFileName;
boolean replace
)
- sName
- Nom du conseiller personnalisé
- sVersion
- Version du conseiller personnalisé.
- iDefaultPort
- Numéro du port de contact du serveur si aucun port n'est défini dans l'appel.
- iInterval
- Fréquence d'interrogation des serveurs par le conseiller.
- sDefaultLogFileName
- Ce paramètre est nécessaire, mais il n'est pas utilisé. La seule valeur acceptable est une chaîne vide : ""
- replace
- Indique si ce conseiller fonctionne en mode remplacement. Les valeurs possibles sont les suivantes :
- true – Remplace la charge calculée par le code de base du conseiller par la valeur indiquée par le conseiller personnalisé.
- false – Ajoute la valeur de la charge indiquée par le conseiller personnalisé à la valeur de la charge calculée par le code de base du conseiller.
Méthode ADV_AdvisorInitialize()
void ADV_AdvisorInitialize()
Cette méthode permet d'exécuter une initialisation qui peut être nécessaire au conseiller personnalisé. Elle est appelée après le démarrage du module de base du conseiller.
Dans la plupart des cas, et notamment dans les conseillers standard, cette méthode n'est pas utilisée et son
code ne comprend qu'une instruction de retour. Cette méthode peut être utilisée pour appeler la méthode suppressBaseOpeningSocket() qui n'est valide que dans cette méthode.
Dans la plupart des cas, et notamment dans les conseillers standard, cette méthode n'est pas utilisée et son
code ne comprend qu'une instruction de retour.
Cette méthode peut être utilisée pour
appeler la méthode suppressBaseOpeningSocket, qui n'est valide que dans la méthode ADV_AdvisorInitialize.
Méthode ADVLOG()
La fonction ADVLOG permet à un conseiller personnalisé d'écrire un message texte dans le fichier journal de base du conseiller. Le format est :
void ADVLOG (int logLevel, String message)
Cette commande possède les paramètres suivants :
- logLevel
- Niveau d'état d'écriture du message dans le fichier journal. Le fichier journal du conseillé est organisé en niveaux ; les messages les plus urgents ont le niveau d'état 0 et les moins urgents reçoivent des valeurs plus élevées. Le type de message le
plus prolixe reçoit le niveau de statut 5. Ces niveaux permettent de contrôler les types
de message que l'utilisateur reçoit en temps réel (La commande dscontrol permet de
définir la prolixité). Les erreurs catastrophiques doivent toujours être consignées au niveau 0.
- message
- Message à écrire dans le fichier journal. La valeur de ce paramètre est une chaîne Java standard.
Fonction getAdvisorName
La fonction getAdvisorName renvoie une chaîne Java avec le suffixe du nom de votre conseiller personnalisé.
Par exemple, pour le conseiller ADV_cdload.java, cette fonction renvoie la valeur cdload.
Cette fonction n'accepte pas de paramètres.
Eviter les incidents : Cette valeur ne peut pas changer lors d'une instanciation d'un conseiller.
gotcha
caller.getCurrentServerId()
La fonction getCurrentServerId
renvoie une chaîne Java qui correspond à une représentation unique du serveur en cours. Généralement, cette valeur change chaque fois que vous appelez le conseiller personnalisé, car le code de base du conseiller interroge toutes les machines en série.
Cette fonction n'accepte pas de paramètres.
caller.getCurrentClusterId()
L'appel de fonction getCurrentClusterId renvoie une chaîne Java qui correspond à une
représentation unique du cluster en cours. Généralement, cette valeur change chaque fois que vous appelez le conseiller personnalisé, car le code de base du conseiller interroge tous les clusters en série.
Cette fonction n'accepte pas de paramètres.
caller.getSocket()
L'appel de
fonction getSocket renvoie une socket Java qui représente la socket ouverte avec le serveur en cours pour les communications.
Cette fonction n'accepte pas de paramètres.
caller.getLatestLoad()
La fonction getLatestLoad permet à un conseiller personnalisé d'obtenir la dernière valeur de charge d'un objet serveur. Les valeurs de charge sont conservées dans des tables internes par le code de base du conseiller et le démon du gestionnaire. Cet appel de fonction est utilisé pour rendre le comportement d'un protocole ou d'un port indépendant de celui d'un autre.
Par exemple, vous pouvez utiliser cet appel de fonction dans un conseiller personnalisé qui a désactivé un serveur d'applications si le serveur Telnet sur la même machine a été désactivé.
La syntaxe est la suivante :
int caller.getLatestLoad (String IDcluster, int port, String IDserveur)
Ensembles, les trois arguments définissent un objet de serveur.
Cette commande possède les paramètres suivants :
- IDcluster
- Identificateur du cluster de l'objet serveur dont la valeur de charge en cours doit être obtenue. Cet argument doit correspondre à une chaîne Java.
- port
- Numéro de port de l'objet de serveur pour lequel la valeur de charge actuelle doit être obtenue.
- IDserveur
- Identificateur de l'objet serveur dont la valeur de charge en cours doit être obtenue. Cet argument doit correspondre à une chaîne Java. La valeur retournée est un entier.
- Une valeur de retour positive représente la valeur de charge réelle affectée à l'objet interrogé.
- La valeur -1 indique que le serveur interrogé est arrêté.
- La valeur -2 indique que le statut du serveur interrogé est inconnu.
caller.receive()
La fonction de réception obtient les informations de la connexion au socket. La syntaxe est la suivante :
caller.receive(StringBuffer *réponse)
Cette commande possède les paramètres suivants :
- réponse
- Il s'agit d'une mémoire tampon de chaîne dans laquelle les données extraites sont placées. De plus, cette fonction renvoie un entier dont la signification est la suivante :
- 0 indique que les données ont été envoyées.
- Une valeur négative indique une erreur.
caller.send()
La fonction d'envoi utilise la connexion de socket établie pour envoyer un paquet de données au serveur en utilisant le port défini. La syntaxe est la suivante :
caller.send(String commande)
Cette commande possède les paramètres suivants :
- commande
- Il s'agit d'une chaîne contenant les données à envoyer au serveur. Cette fonction renvoie un entier dont la signification est la suivante :
- 0 indique que les données ont été envoyées.
- Une valeur négative indique une erreur.
getLoad()
int getLoad( int iConnectTime; ADV_Thread *demandeur )
Cette fonction possède les paramètres suivants :
- iConnectTime
- Délai d'établissement en secondes de la connexion.
Cette mesure de charge est réalisée par le code de base du conseiller et envoyée au code du conseiller personnalisé qui peut utiliser ou ignorer la mesure lors de l'envoi de la valeur de charge. Si la connexion échoue, cette valeur est -1.
- demandeur
- Instance de la classe de base du conseiller où les méthodes de base du conseiller
sont fournies. Appels de fonction disponibles aux conseillers personnalisés : les
méthodes ou les fonctions décrites dans les sections suivantes peuvent être appelées à
partir de conseillers personnalisés. Ces méthodes sont prises en charge par le code de base du conseiller. Certains de ces appels de fonction peuvent être effectués directement (par exemple,
function_name()), tandis que d'autres requièrent le demandeur de préfixe. Le demandeur
représente l'instance de conseiller de base qui prend en charge le conseiller
personnalisé exécuté.
getAdviseOnPort()
La fonction getAdviseOnPort renvoie le numéro de port sur lequel le conseiller personnalisé appelant est exécuté.
La valeur de retour correspond à un entier Java (int) et la fonction n'accepte pas de paramètres.
Remarque : Cette valeur ne peut pas changer lors d'une instanciation d'un conseiller.
getAdvisorName()
La fonction
getAdvisorName renvoie une chaîne Java avec le suffixe du nom de votre conseiller
personnalisé. Par exemple, si le conseiller s'appelle ADV_cdload.java, la fonction retourne cdload.
Cette fonction n'a pas de paramètres. Notez que cette valeur ne peut pas changer lors de l'instanciation d'un conseiller.
getInterval()
La fonction getInterval retourne la fréquence du conseiller, à savoir le nombre de secondes entre les cycles du conseiller. Cette valeur est égale à la valeur par défaut définie dans le
constructeur du conseiller personnalisé, sauf si elle a été modifiée lors de la phase
d'exécution à l'aide de la commande dscontrol.
La valeur renvoyée est un entier Java (int).
Cette fonction n'accepte pas de paramètres.
suppressBaseOpeningSocket()
L'appel de fonction suppressBaseOpeningSocket permet à un conseiller personnalisé
d'indiquer si le code du conseiller de base ouvre une socket TCP au serveur de la part du
conseiller personnalisé. Si votre conseiller n'utilise pas de communication directe au
serveur pour déterminer son statut, il n'est peut-être pas nécessaire d'ouvrir cette socket. Cet appel de fonction ne peut être émis qu'une seule fois et doit l'être à partir de la routine Méthode ADV_AdvisorInitialize().
Cette fonction n'accepte pas de paramètres.