Questo appendice contiene i file di configurazione di esempio per il componente Dispatcher di Load Balancer.
I file di esempio si trovano nella seguente directory:
#!/bin/bash
#
# configuration.sample - File di configurazione di esempio per il
Componente Dispatcher
#
#
# Accertarsi che l'utente root sia l'utente che esegue lo script.
#
# iam=`whoami`
# if [ "$iam" != "root" ]if [ "$iam" != "root" ]
# then
# echo "You must login as root to run this script"
# exit 2
# fi
#
# In primo luogo, avviare il server
#
# dsserver start
# sleep 5
#
# Quindi, avviare l'executor
#
# dscontrol executor start
#
# Il Dispatcher può essere eliminato in qualsiasi momento utilizzando
# i comandi "dscontrol executor stop" e "dsserver stop" per
# arrestare rispettivamente l'executor e il server prima di rimuovere
# il software di Dispatcher.
#
# Il passo successivo nella configurazione di Dispatcher è impostare
# l'indirizzo NFA (indirizzo di non inoltro) e gli indirizzi cluster.
#
# L'NFA viene utilizzato per accedere in remoto alla macchina Dispatcher
# a scopi di amministrazione o configurazione. Questo
# indirizzo è necessario in quanto il Dispatcher inoltrerà i pacchetti
# agli indirizzi cluster.
#
# L'indirizzo CLUSTER è il nome host (o l'indirizzo IP) a cui
# si collegano i client remoti.
#
# In qualunque punto di questo file, i nomi host e gli
# indirizzi IP sono intercambiabili.
#
# NFA=hostname.domain.name
# CLUSTER=www.yourcompany.com
# echo "Loading the non-forwarding address"
# dscontrol executor set nfa $NFA
#
# Il passo successivo nella configurazione di Dispatcher è creare
# un cluster. Il Dispatcher instrada le richieste inviate
# all'indirizzo cluster alle macchine server corrispondenti
# definite per quel cluster. È possibile configurare e utilizzare
# più indirizzi cluster tramite Dispatcher.
# Utilizzare una configurazione simile per CLUSTER2, CLUSTER3 ecc.
#
# echo "Loading first CLUSTER address "
# dscontrol cluster add $CLUSTER
#
# Ora occorre definire le porte che saranno utilizzate da questo cluster.
# Qualsiasi richiesta ricevuta da Dispatcher su una porta definita verrà
# inoltrata alla porta corrispondente di una delle macchine
# server.
#
# echo "Creating ports for CLUSTER: $CLUSTER"
# dscontrol port add $CLUSTER:20+21+80
#
# L'ultimo passo consiste nell'aggiungere ciascuna macchina server
# alle porte di questo cluster.
# Anche in questo caso, è possibile utilizzare il nome host o
# l'indirizzo IP delle macchine server.
#
# SERVER1=server1name.domain.name
# SERVER2=server2name.domain.name
# SERVER3=server3name.domain.name
# echo "Adding server machines"
# dscontrol server add $CLUSTER:20+21+80:
# $SERVER1+$SERVER2+$SERVER3
#
# Si avviano ora i componenti di bilanciamento del carico di
# Dispatcher. Il componente principale viene definito
# gestore e i componenti secondari advisor.
# Se il gestore e gli advisor non sono in esecuzione,
# Dispatcher invia le richieste in formato round-robin. Dopo aver
# avviato il gestore, vengono prese le decisioni sul calcolo dei pesi,
# in base al numero di connessioni nuove e di connessioni attive, e le richieste
# in entrata sono inviate al server considerato più adatto. Gli advisor
# forniscono al gestore ulteriori informazioni sulla capacità di un
# server di ricevere le richieste e rilevano se un server è attivo.
# Se un advisor rileva un server inattivo, lo contrassegna
# come tale (a condizione che le proporzioni del gestore siano state impostate
# in modo da includere l'input dell'advisor) e nessuna ulteriore richiesta
# sarà instradata verso quel server.
# L'ultimo passo nella configurazione dei componenti di bilanciamento
# del carico consiste nell'impostare le proporzioni del gestore. Il gestore
# aggiorna il peso di ciascun server in base a quattro politiche:
# 1. Il numero delle connessioni attive su ciascun server.
# 2. Il numero delle nuove connessioni a ciascun server.
# 3. L'input proveniente dagli advisor.
# 4. L'input proveniente dagli advisor del sistema.
# La somma di tali proporzioni deve essere 100. Ad esempio,
# se si impostano le proporzioni del gestore su
# dscontrol manager proportions 48 48 0 0
# le connessioni attive e nuove rappresenteranno il 48% nella
# decisione sul calcolo dei pesi, gli advisor contribuiranno nella
# misura del 4% e l'input del sistema non verrà preso in considerazione.
#
# NOTA: per impostazione predefinita, le proporzioni del gestore sono impostate a 50 50 0 0
#
# echo "Starting the manager..."
# dscontrol manager start
# echo "Starting the FTP advisor on port 21 ..."
# dscontrol advisor start ftp 21
# echo "Starting the HTTP advisor on port 80 ..."
# dscontrol advisor start http 80
# echo "Starting the Telnet advisor on port 23 ..."
# dscontrol advisor start telnet 23
# echo "Starting the SMTP advisor on port 25 ..."
# dscontrol advisor start smtp 25
# echo "Starting the POP3 advisor on port 110 ..."
# dscontrol advisor start pop3 110
# echo "Starting the NNTP advisor on port 119 ..."
# dscontrol advisor start nntp 119
# echo "Starting the SSL advisor on port 443 ..."
# dscontrol advisor start ssl 443
#
# echo "Setting the manager proportions..."
# dscontrol manager proportions 58 40 2 0
#
# Il passo finale nella configurazione della macchina Dispatcher è creare
# l'alias della scheda di interfaccia di rete(NIC).
#
# NOTA: NON utilizzare questo comando in un ambiente con la funzione
# di disponibilità elevata abilitata. Gli script go* configureranno
# la NIC e il loopback come necessario.
# dscontrol executor configure $CLUSTER
# Se l'indirizzo cluster si trova su una NIC o sottorete diversa
da quella di NFA utilizzare il seguente formato per il comando
di configurazione del cluster.
# dscontrol executor configure $CLUSTER en0 0xfffff800
# dove en0 è la prima scheda ethernet
# e 0xfffff800 è una valida maschera di sottorete per il proprio sito.
#
#
# I seguenti comandi sono impostati sui valori predefiniti.
# Utilizzare questi comandi come guida per modificare i valori predefiniti.
# dscontrol manager loglevel 1
# dscontrol manager logsize 1048576
# dscontrol manager sensitivity 5
# dscontrol manager interval 2
# dscontrol manager refresh 2
#
# dscontrol advisor interval ftp 21 5
# dscontrol advisor loglevel ftp 21 1
# dscontrol advisor logsize ftp 21 1048576
# dscontrol advisor timeout ftp 21 unlimited
# dscontrol advisor interval telnet 23 5
# dscontrol advisor loglevel telnet 23 1
# dscontrol advisor logsize telnet 23 1048576
# dscontrol advisor timeout telnet 23 unlimited
# dscontrol advisor interval smtp 25 5
# dscontrol advisor loglevel smtp 25 1
# dscontrol advisor logsize smtp 25 1048576
# dscontrol advisor timeout smtp 25 unlimited
# dscontrol advisor interval http 80 5
# dscontrol advisor loglevel http 80 1
# dscontrol advisor logsize http 80 1048576
# dscontrol advisor timeout http 80 unlimited
# dscontrol advisor interval pop3 110 5
# dscontrol advisor loglevel pop3 110 1
# dscontrol advisor logsize pop3 110 1048576
# dscontrol advisor timeout pop3 110 unlimited
# dscontrol advisor interval nntp 119 5
# dscontrol advisor loglevel nntp 119 1
# dscontrol advisor logsize nntp 119 1048576
# dscontrol advisor timeout nntp 119 unlimited
# dscontrol advisor interval ssl 443 5
# dscontrol advisor loglevel ssl 443 1
# dscontrol advisor logsize ssl 443 1048576
# dscontrol advisor timeout ssl 443 unlimited
#
Di seguito viene riportato un file di configurazione di esempio di Load Balancer denominato configuration.cmd.sample da utilizzare in Windows.
@echo off
rem configuration.cmd.sample - File di configurazione di esempio per il
rem componente Dispatcher.
rem
rem dsserver deve essere avviato dal pannello Servizi
rem
rem
rem Quindi, avviare l'executor
rem
rem call dscontrol executor start
rem
rem Il passo successivo nella configurazione di Dispatcher è impostare
rem l'indirizzo NFA (indirizzo di non inoltro) e impostare gli
rem indirizzi cluster.
rem
rem L'NFA viene utilizzato per accedere in remoto alla macchina Dispatcher
rem a scopi di amministrazione o configurazione. Questo
rem indirizzo è necessario in quanto il Dispatcher inoltrerà
rem i pacchetti agli indirizzi cluster.
rem
rem L'indirizzo CLUSTER è il nome host (o l'indirizzo IP) a cui
rem si collegano i client remoti.
rem
rem In qualunque punto di questo file, i nomi host e gli
rem indirizzi IP sono intercambiabili.
rem NFA=[Non-forwarding address]
rem CLUSTER=[your clustername]
rem
rem set NFA=hostname.domain.name
rem set CLUSTER=www.yourcompany.com
rem echo "Loading the non-forwarding address"
rem call dscontrol executor set nfa %NFA%
rem
rem I seguenti comandi sono impostati sui valori predefiniti.
rem Utilizzare questi comandi per modificare i valori predefiniti.
rem call dscontrol executor set fintimeout 30
rem
rem Il passo successivo nella configurazione di Dispatcher è creare
rem un cluster. Il Dispatcher instrada le richieste inviate
rem all'indirizzo cluster alle macchine server corrispondenti
rem definite per quel cluster. È possibile configurare e utilizzare
rem più indirizzi cluster tramite Dispatcher.
rem Utilizzare una configurazione simile per CLUSTER2, CLUSTER3 ecc.
rem
rem echo "Loading first CLUSTER address "
rem call dscontrol cluster add %CLUSTER%
rem
rem Ora occorre definire le porte che saranno utilizzate da questo cluster.
rem Qualsiasi richiesta ricevuta da Dispatcher su una porta definita verrà
rem inoltrata alla porta corrispondente
rem di una delle macchine server.
rem
rem echo "Creating ports for CLUSTER: %CLUSTER%"
rem call dscontrol port add %CLUSTER%:20+21+80
rem
rem L'ultimo passo consiste nell'aggiungere ciascuna macchina server
rem alle porte di questo cluster. Anche in questo caso, è possibile utilizzare
rem il nome host o l'indirizzo IP delle macchine server.
rem
rem set SERVER1=server1name.domain.name
rem set SERVER2=server2name.domain.name
rem set SERVER3=server3name.domain.name
rem echo "Adding server machines"
rem call dscontrol server add %CLUSTER%:20+21+80:
rem %SERVER1%+%SERVER2%+%SERVER3%
rem
rem Si avviano ora i componenti di bilanciamento del carico di
rem Dispatcher. Il componente principale viene definito
rem gestore e i componenti secondari advisor.
rem Se il gestore e gli advisor non sono in esecuzione,
rem Dispatcher invia le richieste in formato round-robin. Dopo aver
rem avviato il gestore, vengono prese le decisioni sul calcolo dei pesi,
rem in base al numero di connessioni nuove e di connessioni attive, e le richieste
rem in entrata sono inviate al server considerato più adatto. Gli advisor
rem forniscono al gestore ulteriori informazioni
rem ulteriori informazioni sulla capacità di un
rem server di ricevere le richieste e rilevano se un server è attivo.
rem Se un advisor rileva un server inattivo, lo contrassegna come tale
rem (a condizione che le proporzioni del gestore siano state impostate
rem in modo da includere l'input dell'advisor) e nessuna ulteriore richiesta sarà
rem instradata verso quel server.
rem L'ultimo passo nella configurazione dei componenti di bilanciamento
rem del carico consiste nell'impostare le proporzioni del gestore. Il
rem gestore aggiorna il peso di ciascun server in base
rem a quattro politiche:
rem 1. Il numero delle connessioni attive su ciascun server.
rem 2. Il numero delle nuove connessioni a ciascun server.
rem 3. L'input proveniente dagli advisor.
rem 4. L'input proveniente dagli advisor del sistema.
rem
rem La somma di tali proporzioni deve essere 100. Ad esempio,
rem impostando le proporzioni del cluster mediante
rem dscontrol cluster set <cluster> proportions 48 48 4 0
rem le connessioni attive e nuove rappresenteranno il 48% nella
rem decisione sul calcolo dei pesi, l'advisor contribuirà nella
rem misura del 4% e l'input del sistema non verrà preso in considerazione.
rem
rem NOTA: per impostazione predefinita, le proporzioni del gestore sono impostate a
rem 50 50 0 0
rem echo "Starting the manager..."
rem call dscontrol manager start
rem echo "Starting the FTP advisor on port 21 ..."
rem call dscontrol advisor start ftp 21
rem echo "Starting the HTTP advisor on port 80 ..."
rem call dscontrol advisor start http 80
rem echo "Starting the Telnet advisor on port 23 ..."
rem call dscontrol advisor start telnet 23
rem echo "Starting the SMTP advisor on port 25 ..."
rem call dscontrol advisor start smtp 25
rem echo "Starting the POP3 advisor on port 110 ..."
rem call dscontrol advisor start pop3 110
rem echo "Starting the NNTP advisor on port 119 ..."
rem call dscontrol advisor start nntp 119
rem echo "Starting the SSL advisor on port 443 ..."
rem call dscontrol advisor start ssl 443
rem
rem echo "Setting the cluster proportions..."
rem call dscontrol cluster set %CLUSTER% proportions 58 40 2 0
rem
rem Il passo finale nella configurazione della macchina Dispatcher è creare
rem l'alias della scheda di interfaccia di rete (NIC).
rem
rem NOTA: NON utilizzare questo comando in un ambiente con la funzione
rem di disponibilità elevata abilitata. Gli script go* configureranno
rem la NIC e il loopback come necessario.
rem
rem dscontrol executor configure %CLUSTER%
rem Se l'indirizzo cluster si trova su una NIC o sottorete diversa
rem da quella di NFA utilizzare il seguente formato per il comando
rem di configurazione del cluster.
rem dscontrol executor configure %CLUSTER% en0 0xfffff800
rem dove en0 è la prima scheda ethernet e 0xfffff800 è
rem una maschera di sottorete valida per questo sito.
rem
rem
rem I seguenti comandi sono impostati sui valori predefiniti.
rem Utilizzare questi comandi come guida per modificare i valori predefiniti.
rem call dscontrol manager loglevel 1
rem call dscontrol manager logsize 1048576
rem call dscontrol manager sensitivity 5
rem call dscontrol manager interval 2
rem call dscontrol manager refresh 2
rem
rem call dscontrol advisor interval ftp 21 5
rem call dscontrol advisor loglevel ftp 21 1
rem call dscontrol advisor logsize ftp 21 1048576
rem call dscontrol advisor timeout ftp 21 unlimited
rem call dscontrol advisor interval telnet 23 5
rem call dscontrol advisor loglevel telnet 23 1
rem call dscontrol advisor logsize telnet 23 1048576
rem call dscontrol advisor timeout telnet 23 unlimited
rem call dscontrol advisor interval smtp 25 5
rem call dscontrol advisor loglevel smtp 25 1
rem call dscontrol advisor logsize smtp 25 1048576
rem call dscontrol advisor timeout smtp 25 unlimited
rem call dscontrol advisor interval http 80 5
rem call dscontrol advisor loglevel http 80 1
rem call dscontrol advisor logsize http 80 1048576
rem call dscontrol advisor timeout http 80 unlimited
rem call dscontrol advisor interval pop3 110 5
rem call dscontrol advisor loglevel pop3 110 1
rem call dscontrol advisor logsize pop3 110 1048576
rem call dscontrol advisor timeout pop3 110 unlimited
rem call dscontrol advisor interval nntp 119 5
rem call dscontrol advisor loglevel nntp 119 1
rem call dscontrol advisor logsize nntp 119 1048576
rem call dscontrol advisor timeout nntp 119 unlimited
rem call dscontrol advisor interval ssl 443 5
rem call dscontrol advisor loglevel ssl 443 1
rem call dscontrol advisor logsize ssl 443 1048576
rem call dscontrol advisor timeout ssl 443 unlimited
rem
Di seguito è riportato un file advisor di esempio denominato ADV_sample.
/**
* ADV_sample: L'advisor HTTP di Load Balancer
*
*
* Questa classe definisce un advisor personalizzato di esempio per Load Balancer.
* Analogamente a
tutti gli advisor, questo advisor personalizzato estende la funzione
* dell'advisor di base,
denominato ADV_Base. L'advisor di base esegue effettivamente
* la maggior parte delle
funzioni dell'advisor, come ad esempio l'invio dei carichi
* a Load Balancer da utilizzare nell'algoritmo di valutazione di Load Balancer. Inoltre,
* tale advisor effettua le operazioni di connessione e chiusura del socket e fornisce
* i metodi di invio e di ricezione
all'advisor. L'advisor stesso viene utilizzato
* esclusivamente per l'invio e la ricezione dei dati a e dalla porta sul server
* esaminato. I metodi TCP forniti con l'advisor di base sono programmati per calcolare
* il carico. Se necessario, un indicatore all'interno del costruttore dell'advisor
* di base sostituisce il carico esistente con il nuovo carico restituito dall'advisor.
*
* Nota: in base al valore impostato nel costruttore, l'advisor di base fornisce
* il carico all'algoritmo di valutazione a intervalli specifici. Se
* l'advisor effettivo non è stato completato in modo che restituisca un carico valido,
* l'advisor di base utilizza il carico precedente.
*
* DENOMINAZIONE
*
* La convenzione di denominazione è la seguente:
*
* - Il file deve trovarsi nella seguente directory Load Balancer:
*
* lb/servers/lib/CustomAdvisors/ (lb\servers\lib\CustomAdvisors su Windows)
*
* - Il nome Advisor deve essere preceduto da "ADV_". Tuttavia, è possibile
* avviare l'advisor solo con il nome; ad esempio, l'advisor "ADV_sample"
* può essere avviato con "sample".
*
* - Il nome dell'advisor deve avere caratteri minuscoli.
*
* Quindi, tenendo presente quanto riportato sopra, questo esempio viene definito:
*
* <base directory>/lib/CustomAdvisors/ADV_sample.class
*
*
* Gli advisors, come tutti i componenti restanti di Load Balancer, devono essere
* compilati con la versione prereq di Java. Per garantire l'accesso alle classi Load Balancer,
* verificare che il file ibmlb.jar (situato nella sottodirectory lib della directory
* di base) sia incluso nel CLASSPATH del sistema.
*
* Metodi forniti da ADV_Base:
*
* - ADV_Base (Costruttore):
*
* - Parametri
* - String sName = Nome dell'advisor
* - String sVersion = Versione dell'advisor
* - int iDefaultPort = Numero porta predefinita su cui effettuare l'esame
* - int iInterval = Intervallo durante il quale eseguire l'esame dei server
* - String sDefaultName = Non utilizzato. Deve essere inviato come "".
* - boolean replace = True - sostituisce il valore del carico calcolato
* dall'advisor di base
* False - aggiunge il valore del carico calcolato
* dall'advisor di base
* - Valori di ritorno
* - I costruttori non hanno valori di ritorno.
*
* Poiché l'advisor di base è basato sul thread, sono disponibili
* altri metodi a cui è possibile fare riferimento utilizzando
* il parametro CALLER inviato in getLoad().
*
* Questi metodi sono:
*
* - send - Invia un pacchetto di informazioni sulla connessione socket stabilita
* al server sulla porta specificata.
* - Parametri
* - String sDataString - I dati da inviare sotto forma di una stringa
* - Valori di ritorno
* - int RC - Invio dei dati riuscito o meno: zero indica che
* i dati sono stati inviati; un valore intero negativo indica un errore.
*
* - receive - Riceve le informazioni dalla connessione socket connection.
* - Parametri
* - StringBuffer sbDataBuffer - I dati ricevuti durante la chiamata di ricezione
* - Valori di ritorno
* - int RC - Ricezione dei dati riuscita o meno; zero
* indica che i dati sono stati inviati; un valore intero negativo indica
* un errore.
*
* Se la funzione fornita dall'advisor di base non è sufficiente,
* è possibile creare la funzione adeguata nell'advisor e
* i metodi forniti dall'advisor di base verranno ignorati.
*
* Una domanda importante sul carico restituito è se applicare
* tale carico a quello generato nell'advisor di base
* oppure se sostituirlo; sono presenti istanze valide di entrambe le situazioni.
*
* Questo esempio corrisponde essenzialmente all'advisor HTTP di Load Balancer. Il funzionamento
* è molto semplice: viene emessa una richiesta di invio--una richiesta head http. Quando viene
* ricevuta la risposta, il metodo getLoad termina, indicando all'advisor
* di base di arrestare la sincronizzazione della richiesta. Il metodo è quindi completo. Le
* informazioni restituite non vengono analizzate; il carico si basa sul tempo
* necessario per eseguire le operazioni di invio e ricezione.
*/
package CustomAdvisors;
import com.ibm.internet.nd.advisors.*;
public class ADV_sample extends ADV_Base implements ADV_MethodInterface
{
String COPYRIGHT =
"(C) Copyright IBM Corporation 1997, All Rights Reserved.\n";
static final String ADV_NAME ="Sample";
static final int ADV_DEF_ADV_ON_PORT = 80;
static final int ADV_DEF_INTERVAL = 7;
// Nota: la maggior parte dei protocolli del server richiede un ritorno a capo ("\r")
// e un avanzamento riga ("\n") alla fine dei messaggi. In questo caso, includerli
// nella stringa.
static final String ADV_SEND_REQUEST =
"HEAD / HTTP/1.0\r\nAccept: */*\r\nUser-Agent: " +
"IBM_Load_Balancer_HTTP_Advisor\r\n\r\n";
/**
* Costruttore.
*
* Parametri: Nessuno ma il costruttore per ADV_Base ha diversi parametri
* che devono essere inviati.
*
*/
public ADV_sample()
{
super( ADV_NAME,
"2.0.0.0-03.27.98",
ADV_DEF_ADV_ON_PORT,
ADV_DEF_INTERVAL,
"", // non utilizzato
false);
super.setAdvisor( this );
}
/**
* ADV_AdvisorInitialize
*
* Qualsiasi inizializzazione specifica dell'advisor che deve essere effettuata
* in seguito all'avvio dell'advisor di base. Questo metodo viene richiamato solo
* una volta e, generalmente, non viene utilizzato.
*/
public void ADV_AdvisorInitialize()
{
return;
}
/**
* getLoad()
*
* Questo metodo viene chiamato dall'advisor di base per completare il funzionamento
* dell'advisor, in base ai dettagli specifici del protocollo. In questo advisor
* di esempio, è necessaria solo una singola operazione di invio e di ricezione; in
* caso di logiche più complesse, è possibile emettere più operazioni di invio e
* ricezione. Adesempio, una risposta potrebbe essere ricevuta e analizzata. In base alle
* informazioni apprese, potrebbe essere emessa un'altra operazione di invio e di ricezione.
*
* Parametri:
*
* - iConnectTime - Il carico corrente poiché fa riferimento al tempo impiegato
* per completare la connessione al server attraverso
* la porta specificata.
*
* - caller - Un riferimento alla classe dell'advisor di base in cui i metodi forniti da Load
* Balancer devono eseguire richieste TCP semplici,
* principalmente l'invio e la ricezione.
*
* Risultati:
*
* - Carico - Un valore, espresso in millisecondi, che può essere aggiunto
* o sostituito al carico esistente, come specificato
* dall'indicatore "replace" del costruttore.
*
* Più è grande il carico e maggiore sarà il tempo necessario al server per rispondere;
* quindi, il peso all'interno di Load Balancer verrà ridotto.
*
* Se il valore è negativo, potrebbe essersi verificato un errore. Un errore proveniente
* da un advisor indica che il server che sta tentando di raggiungere non
* è accessibile ed è stato individuato come disattivo. Load Balancer
* non tenterà di eseguire il bilanciamento del carico su un server disattivo. Load Balancer
* riprenderà tale operazione quando riceverà un valore positivo da tale server.
*
*/
public int getLoad(int iConnectTime, ADV_Thread caller) {
int iRc;
int iLoad = ADV_HOST_INACCESSIBLE; // -1
// Per inviare la richiesta tcp
iRc = caller.send(ADV_SEND_REQUEST);
if (iRc >= 0)
{
// Per eseguire una ricezione
StringBuffer sbReceiveData = new StringBuffer("");
iRc = caller.receive(sbReceiveData);
/**
* In modalità advisor normale (l'indicatore "replace" è false), il carico
* restituito è 0 o 1 a seconda se il server è attivo o meno.
* Se la ricezione è avvenuta con esito positivo, viene restituito un carico con valore
* zero che indica che è necessario utilizzare il carico creato nell'advisor di base.
*
* Altrimenti (l'indicatore "replace" è true), viene restituito il valore di carico
* desiderato.
*/
if (iRc >= 0)
{
iLoad = 0;
}
}
return iLoad;
}
} // Fine - ADV_sample