Métodos de asesor personalizados y llamadas a función

Utilice los métodos de asesor y llamadas a función siguientes en los asesores personalizados.

Tenga en cuenta que los asesores han de tener todas las rutinas necesarias. Los asesores deben tener los métodos de clase base siguientes:

Constructor (proporcionado por la base del asesor)

public <nombre_asesor> {
  String sName; 
  String sVersion; 
  int iDefaultPort; 
  int iInterval; 
  String sDefaultLogFileName; 
  boolean replace 
) 
sName
Nombre del asesor personalizado.
sVersion
Versión del asesor personalizado.
iDefaultPort
Número de puerto en el que ponerse en contacto con el servidor si no se especifica ningún número de puerto en la llamada.
iInterval
Intervalo al que el asesor consultará a los servidores.
sDefaultLogFileName
Este parámetro es necesario pero no se utiliza. El único valor aceptable es la serie vacía, ""
replace
Determina si este asesor funciona o no en modalidad de sustitución. Los valores posibles son los siguientes:
  • true: sustituye la carga calculada por el código base del asesor por el valor indicado por el asesor personalizado.
  • false: añade el valor de carga indicado por el asesor personalizado al valor de carga calculado por el código base del asesor.

Método ADV_AdvisorInitialize()

void  ADV_AdvisorInitialize()

Este método se proporciona para realizar cualquier inicialización que pueda ser necesaria para el asesor personalizado. Este método se llama después de que se inicie el módulo base del asesor. En muchos casos, incluidos los asesores estándar, no se utiliza este método y el código consta de una instrucción return sólo. Este método se puede utilizar para llamar al método suppressBaseOpeningSocket(), que sólo es válido desde este método.

En muchos casos, incluidos los asesores estándar, no se utiliza este método y el código consta de una instrucción return sólo. Puede utilizar este método para llamar al método suppressBaseOpeningSocket, que es válido sólo desde el método ADV_AdvisorInitialize.

Método ADVLOG()

La función ADVLOG permite que un asesor personalizado grabe un mensaje de texto en el archivo de anotaciones cronológicas base de asesor. El formato es el siguiente:
void ADVLOG (int logLevel, String mensaje) 
Este mandato tiene los parámetros siguientes:
logLevel
Nivel de estado en el que el mensaje se graba en el archivo de anotaciones cronológicas. El archivo de anotaciones cronológicas de asesor se organiza en etapas; a los mensajes más urgentes se les asigna el nivel de estado 0 y los mensajes menos urgentes reciben los números más altos. Al tipo de mensaje más verboso se le asigna el nivel de estado 5. Estos niveles se utilizan para controlar los tipos de mensajes que el usuario recibe en tiempo real (el mandato dscontrol se utiliza para establecer la verbosidad). Los errores de máxima gravedad deben anotarse siempre en el nivel 0.
message
Mensaje que se debe grabar en el archivo de anotaciones cronológicas. El valor de este parámetro es una serie Java estándar.

Función getAdvisorName

La función getAdvisorName devuelve una serie Java con la parte de sufijo del nombre de asesor personalizado. Por ejemplo, para un asesor denominado ADV_cdload.java, esta función devuelve el valor cdload.

Esta función no acepta parámetros.
Avoid trouble Avoid trouble: No es posible que este valor cambie durante una instanciación de un asesor.gotcha

caller.getCurrentServerId()

La función getCurrentServerId devuelve una serie Java que es una representación única del servidor actual. Normalmente, este valor cambia cada vez que se llama al asesor personalizado, porque el código base de asesor consulta todas las máquinas de servidor en serie.

Esta función no acepta parámetros.

caller.getCurrentClusterId()

La llamada a la función getCurrentClusterId devuelve una serie Java que es una representación única del clúster actual. Normalmente, este valor cambia cada vez que se llama al asesor personalizado, porque la base de asesor consulta todos los clústeres en serie.

Esta función no acepta parámetros.

caller.getSocket()

La llamada a la función getSocket devuelve un socket Java que representa el socket abierto en el servidor actual para la comunicación.

Esta función no toma ningún parámetro.

caller.getLatestLoad()

La función getLatestLoad permite que un asesor personalizado obtenga el valor de carga más reciente para un objeto de servidor determinado. El código base del asesor y el daemon del gestor mantienen los valores de carga en tablas internas. Esta llamada de función es útil si desea que el comportamiento de un protocolo o puerto sea dependiente del comportamiento de otro. Por ejemplo, puede utilizar esta llamada de función en un asesor personalizado que ha inhabilitado un servidor de aplicaciones determinado si el servidor Telnet de esa misma máquina estaba inhabilitado.

La sintaxis es:
int caller.getLatestLoad (String ID_clúster, int puerto, String ID_servidor)
Los tres argumentos juntos definen un objeto de servidor.
Este mandato tiene los parámetros siguientes:
clusterId
Identificador de clúster del objeto de servidor para el que se debe obtener el valor de carga actual. Este argumento debe ser una serie Java.
port
Número de puerto del objeto de servidor para el que se debe obtener el valor de carga actual.
serverId
Identificador de servidor del objeto de servidor para el que se debe obtener el valor de carga actual. Este argumento debe ser una serie Java. El valor de retorno es un entero.
  • Un valor de retorno positivo representa el valor de carga real asignado para el objeto que se ha consultado.
  • El valor -1 indica que el servidor preguntó acerca de si estaba inactivo.
  • El valor -2 indica que el estado del servidor preguntó acerca de si era desconocido.

caller.receive()

La función receive obtiene información de la conexión de socket.La sintaxis es:
caller.receive(StringBuffer *response) 
Este mandato tiene los parámetros siguientes:
response
Se trata de un almacenamiento intermedio de serie en el que se sitúan los datos recuperados. De forma adicional, la función devuelve un valor entero con la importancia siguiente:
  • 0 indica que los datos se han enviado satisfactoriamente.
  • Un número negativo indica un error.

caller.send()

La función send utiliza la conexión de socket establecida para enviar un paquete de datos al servidor, utilizando el puerto especificado.La sintaxis es la siguiente:
caller.send(String mandato) 
Este mandato tiene los parámetros siguientes:
command
Se trata de una serie que contiene los datos que se van a enviar al servidor. La función devuelve un valor entero con la importancia siguiente:
  • 0 indica que los datos se han enviado satisfactoriamente.
  • Un número negativo indica un error.

getLoad()

int getLoad( int iConnectTime; ADV_Thread *caller )
Esta función tiene los parámetros siguientes:
iConnectTime
Tiempo, en milisegundos, que ha tardado la conexión en completarse. Esta medición de carga la realiza la base de asesor y se pasa al código de asesor personalizado, que puede utilizar o ignorar la medición al devolver el valor de carga. Si no se ha podido realizar la conexión, este valor se establece en -1.
caller
La instancia de la clase base del asesor donde se incluyen los métodos base del asesor. Las llamadas a función disponibles para los asesores personalizados: los métodos, o funciones, descritos en los apartados siguientes se pueden llamar desde los asesores personalizados. El código base de asesor soporta estos métodos. Algunas de estas llamadas a función se pueden realizar directamente, por ejemplo, nombre_función(), pero otras necesitan el prefijo caller. "Caller" representa la instancia de asesor base que admite el asesor personalizado que se está ejecutando.

getAdviseOnPort()

La función getAdviseOnPort devuelve el número de puerto en el que se está ejecutando el asesor personalizado que efectúa la llamada.

El valor de retorno es un entero Java (int) y la función no acepta parámetros.
Nota: No es posible que este valor cambie durante una instanciación de un asesor.

getAdvisorName()

La función getAdvisorName devuelve una serie Java con la parte de sufijo del nombre de asesor personalizado. Por ejemplo, para un asesor denominado ADV_cdload.java, esta función devuelve el valor cdload.Esta función no toma ningún parámetro. Tenga en cuenta que este valor no puede cambiar durante una instanciación de un asesor.

getInterval()

La función getInterval devuelve el intervalo de asesor, es decir, el número de segundos entre ciclos de asesor. Este valor es igual al valor predeterminado establecido en el constructor del asesor personalizado, a no ser que se haya modificado el valor durante la ejecución mediante el mandato dscontrol. El valor de retorno es un entero Java (int).

La función no toma ningún parámetro.

suppressBaseOpeningSocket()

La llamada a la función suppressBaseOpeningSocket permite que un asesor personalizado especifique si el código de asesor base abre un socket TCP para el servidor en nombre del asesor personalizado. Si el asesor no utiliza la comunicación directa con el servidor para determinar su estado, puede que no sea necesario abrir este socket. Esta llamada a función se puede emitir sólo una vez y debe emitirse desde la rutina de Método ADV_AdvisorInitialize().

La función no acepta parámetros.

Reference topic    

Terms and conditions for information centers | Feedback

Last updated: May 23, 2013 03:57 PM EDT
File name: rprf_advcustmeth.html