Domanda

Per quanto riguarda la C che cosa è una routine stub? Anche un esempio sarebbe apprezzato pure.

È stato utile?

Soluzione

Una routine stub può essere una delle (almeno) due cose.


In primo luogo, può essere una routine segnaposto che si sviluppa rapidamente per testare una routine di livello superiore, con l'intenzione di sostituire una versione reale in seguito. Questo è in genere utilizzato con top-down di sviluppo (codifica i livelli più alti prima poi lavorare la strada verso la roba più dettagliata) e può essere semplice come:

int getCount (void) { return 7; } // just return fixed value for testing.

o un po 'più complesso:

// Cycle through values for some variety.
int getCount (void) {
    int retvals[] = {2,7,1,8,2,8,1,8,2,8,4,5,9};
    static int pos = -1;
    pos = (pos + 1) % (sizeof (retvals) / sizeof (*retvals));
    return retvals[pos];
}

Naturalmente, una volta che lo stub ottiene abbastanza complesso, si può anche semplicemente implementare la cosa vera: -)


In secondo luogo, è comunemente usato in ambienti (RPC) chiamata di procedura remota. Uno stub non viene utilizzato per smistamento dei dati ad un'estremità e comunicare a un server all'altro capo.

RPC ha bisogno di creare funzioni di stub per il client e un server. E 'molto simile ad un prototipo di funzione in C, ma il risultato finale è un po' diverso, come ad esempio:

+----------------+
| Client         |
|  +----------+  |  +---------------+
|  |   main   |  |  | Server        |
|  |----------|  |  |  +----------+ |
|  | stub_cli |------->| stub_svr | |
|  +----------+  |  |  |----------| |
+----------------+  |  | function | |
                    |  +----------+ |
                    +---------------+

In questo esempio, invece di chiamare function nello stesso programma, main chiama una funzione client stub (con lo stesso prototipo di function) che è responsabile per il confezionamento di backup delle informazioni e ottenere attraverso il filo a un altro processo. Questa può essere la stessa macchina o su una macchina diversa, ma non importa -. Uno dei vantaggi di RPC è quello di essere in grado di spostare i server in giro a volontà

Nel server, c'è un processo di 'ascoltatore' che riceverà le informazioni e passarlo al server. stub del server riceve le informazioni, decomprime e lo passa alla funzione reale.

La funzione reale allora fa quello che deve e ritorna al server stub che può confezionare il backup delle informazioni di ritorno e passare di nuovo allo stub client.

Il client stub spacchetta allora che e passa di nuovo a main.

Altri suggerimenti

Si tratta di una funzione con la stessa firma la funzione di vero e proprio, ma non fa nulla, e può essere compilato ed eseguito proprio come la cosa reale. per es.

int MyStub(char * str)
{
    /* Stub - Does Nothing */

    return 0;
}

Questi sono spesso usati come segnaposto, cosicché struttura complessiva programma può essere elaborato prima, e poi i dettagli.

Nel linguaggio C codice stub in realtà chiamare il main (), non il sistema operativo o compilatore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top