Chiamate alle funzioni e ai metodi advisor personalizzati

Utilizzare le seguenti chiamate alle funzioni e ai metodi advisor nei propri advisor personalizzati.

Tenere presente che gli advisor personalizzati devono avere tutte le routine richieste. Gli advisor devono avere i seguenti metodi di classi di base:

Constructor (fornito dalla base advisor)

public <nome_advisor> {
  String sName; 
  String sVersion; 
  int iDefaultPort; 
  int iInterval; 
  String sDefaultLogFileName; 
  boolean replace 
) 
sName
Il nome dell'advisor personalizzato.
sVersion
La versione dell'advisor personalizzato.
iDefaultPort
La porta su cui contattare il server se non è specificata alcuna porta nella chiamata.
iInterval
L'intervallo a cui l'advisor interrogherà i server.
sDefaultLogFileName
Questo parametro è obbligatorio, ma non viene utilizzato. L'unico valore accettabile è una stringa null, ""
replace
Indica se questo advisor funziona o meno in modalità di sostituzione. I valori possibili sono:
  • true – Sostituisce il carico calcolato dal codice di base dell'advisor con il valore riportato dall'advisor personalizzato.
  • false – Aggiunge il valore del carico riportato dall'advisor personalizzato al valore del carico calcolato dal codice di base dell'advisor.

Metodo ADV_AdvisorInitialize()

void ADV_AdvisorInitialize()

Questo metodo è fornito per eseguire una qualsiasi inizializzazione che potrebbe essere richiesta per l'advisor personalizzato. Questo metodo viene richiamato una volta avviato il modulo di base dell'advisor. In molti casi, includendo gli advisor standard, questo metodo non viene utilizzato e il relativo codice sarà costituito solo da una istruzione return. È possibile utilizzare questo metodo per richiamare il metodo suppressBaseOpeningSocket(), valido solo dall'interno di questo metodo.

In molti casi, includendo gli advisor standard, questo metodo non viene utilizzato e il relativo codice sarà costituito solo da una istruzione return. È possibile utilizzare questo metodo per richiamare il metodo suppressBaseOpeningSocket, valido solo all'interno del metodo ADV_AdvisorInitialize.

Metodo ADVLOG()

La funzione ADVLOG consente a un advisor personalizzato di scrivere un messaggio di testo sul file di log di base dell'advisor. Il formato è il seguente:
void ADVLOG (int logLevel, String messaggio) 
Questo comando ha i seguenti parametri:
logLevel
Il livello di stato a cui il messaggio viene scritto nel file di log. Il file di log dell'advisor è organizzato in fasi; ai messaggi più urgenti viene attribuito il livello di stato 0, mentre quelli meno urgenti ricevono numeri più elevati. Il tipo di messaggio più dettagliato ha un livello di stato pari a 5. Questi livelli sono utilizzati per controllare i tipi di messaggi ricevuti dall'utente in tempo reale (viene utilizzato il comando dscontrol per impostare il grado di dettaglio). Errori irreversibili devono essere sempre registrati a un livello 0.
Il messaggio da scrivere nel file di log. Il valore per questo parametro è una stringa Java standard.

Funzione getAdvisorName

La funzione getAdvisorName restituisce una stringa Java con il suffisso del nome del proprio advisor personalizzato. Ad esempio, per un advisor denominato ADV_cdload.java, questa funzione restituisce il valore cdload.

Questa funzione non ha parametri.
Prevenzione dei problemi Prevenzione dei problemi: non è possibile modificare questo valore durante la creazione di un'istanza di un advisor.gotcha

caller.getCurrentServerId()

La funzione getCurrentServerId restituisce una stringa Java che è una rappresentazione univoca per il server corrente. Solitamente, questo valore cambia ogni volta che si chiama il proprio advisor personalizzato, poiché il codice dell'advisor di base interroga tutte le macchine server in serie.

Questa funzione non ha parametri.

caller.getCurrentClusterId()

La chiamata alla funzione getCurrentClusterId restituisce una stringa Java che è una rappresentazione univoca per il cluster corrente. Solitamente, questo valore cambia ogni volta che si chiama il proprio advisor personalizzato, poiché l'advisor di base interroga tutti i cluster in serie.

Questa funzione non ha parametri.

caller.getSocket()

La chiamata alla funzione getSocket restituisce un socket Java che rappresenta il socket aperto sul server corrente per la comunicazione.

Questa funzione non ha parametri.

caller.getLatestLoad()

La funzione getLatestLoad consente a un advisor di ottenere il valore di carico più recente per un determinato oggetto server. I valori di carico sono conservati in tabelle interne del codice di base dell'advisor e dal daemon del gestore. La chiamata a questa funzione risulta utile se si desidera rendere il funzionamento di un protocollo o di una porta dipendente dal funzionamento di un altro. Ad esempio, è possibile utilizzare la chiamata a questa funzione in un advisor personalizzato che ha disabilitato un determinato server delle applicazioni se è stato disabilitato il server Telnet sulla stessa macchina.

La sintassi è:
int caller.getLatestLoad (String ID_cluster, int porta, String ID_server)
I tre argomenti insieme definiscono un oggetto server.
Questo comando ha i seguenti parametri:
clusterId
L'identificativo cluster dell'oggetto server per cui ottenere il valore di carico corrente. Questo argomento deve essere una stringa Java.
port
Il numero porta dell'oggetto server per cui si deve ottenere il valore di carico attuale.
serverId
L'identificatore del server dell'oggetto server per il quale si deve ottenere il valore di carico attuale. Questo argomento deve essere una stringa Java. Il valore di ritorno è un numero intero.
  • Un valore di ritorno positivo rappresenta il valore di carico corrente assegnato per l'oggetto interrogato.
  • Il valore -1 indica che il server interrogato è inattivo.
  • Il valore -2 indica che lo stato del server interrogato è sconosciuto.

caller.receive()

La funzione receive richiama informazioni dalla connessione socket. La sintassi è:
caller.receive(StringBuffer *response) 
Questo comando ha i seguenti parametri:
response
Questo è un buffer di stringa in cui vengono inseriti i dati richiamati. Inoltre, la funzione restituisce un valore integer con il seguente significato:
  • 0 indica che i dati sono stati inviati con successo.
  • Un numero negativo indica un errore.

caller.send()

La funzione send utilizza la connessione socket stabilita per inviare un pacchetto di dati al server, utilizzando la porta specificata. La sintassi è:
caller.send(String comando) 
Questo comando ha i seguenti parametri:
command
Questa è una stringa che contiene i dati da inviare al server. La funzione restituisce un valore integer con il seguente significato:
  • 0 indica che i dati sono stati inviati con successo.
  • Un numero negativo indica un errore.

getLoad()

int getLoad( int iConnectTime; ADV_Thread *caller )
Questa funzione ha i seguenti parametri:
iConnectTime
Il tempo, espresso in millisecondi, richiesto per il completamento della connessione. Questa misurazione del carico viene eseguita dal codice di base dell'advisor e viene inviata al codice dell'advisor personalizzato, che può utilizzarla o ignorarla quando restituisce il valore di carico. Se la connessione riporta un errore, questo valore è impostato su-1.
caller
L'istanza della classe di base dell'advisor in cui sono forniti i metodi di base dell'advisor. Chiamate alla funzione disponibili per gli advisor personalizzati: i metodi o le funzioni descritte nelle seguenti sezioni possono essere richiamate dagli advisor personalizzati. Questi metodi sono supportati dal codice di base dell'advisor. Alcune di queste chiamate alla funzione possono essere effettuate direttamente, come ad esempio function_name(), ma altre richiedono il chiamante del prefisso. Il chiamante rappresenta l'istanza dell'advisor di base che supporta l'advisor personalizzato che viene eseguito.

getAdviseOnPort()

La funzione getAdviseOnPort restituisce il numero di porta su cui è in esecuzione l'advisor personalizzato chiamante.

Il valore di ritorno è un intero Java (int) e la funzione non ha alcun parametro.
Nota: non è possibile modificare questo valore durante la creazione di un'istanza di un advisor.

getAdvisorName()

La funzione getAdvisorName restituisce una stringa Java con il suffisso del nome dell'advisor personalizzato. Ad esempio, per un advisor denominato ADV_cdload.java, questa funzione restituisce il valore cdload. Questa funzione non ha parametri. Tenere presente che non è possibile per questo valore cambiare durante la creazione di un'istanza dell'advisor.

getInterval()

La funzione getInterval restituisce l'intervallo dell'advisor, ovvero il numero di secondi tra i cicli dell'advisor. Questo valore è uguale al valore predefinito impostato nel costruttore dell'advisor personalizzato, a meno che non sia stato modificato in fase di runtime mediante il comando dscontrol. Il valore di ritorno è un intero Java (int).

La funzione non ha parametri.

suppressBaseOpeningSocket()

La chiamata alla funzione suppressBaseOpeningSocket consente a un advisor personalizzato di specificare se il codice dell'advisor di base apre un socket TCP sul server per conto dell'advisor personalizzato. Se il proprio advisor non utilizza la comunicazione diretta con il server per determinarne lo stato, potrebbe non essere necessario aprire questo socket. Questa chiamata alla funzione può essere eseguita una sola volta e deve essere eseguita dalla routine Metodo ADV_AdvisorInitialize().

La funzione non ha parametri.

Argomento di riferimento    

Clausole e condizioni per i centri informazioni | Feedback

Ultimo aggiornamento: May 14, 2012 01:50 PM EDT
Nome file: rprf_advcustmeth.html