#include <Server.h>
Diagramma delle classi per Server


Classe principale di MGS. Ha il compito di:
ConnectionHandler) all'arrivo di una nuova connessione
Definizione alla linea 45 del file Server.h.
Membri pubblici | |
| Server (const InetAddress &, const tpport_t, const string) | |
| void | run (const timeout_t=TIMEOUT_INF) |
| virtual | ~Server (void) |
| Distruttore della Classe Server. | |
Membri privati | |
| bool | onAccept (const InetHostAddress &, const tpport_t) |
| void | loadPlugInGames (void) |
| Caricamento delle Classi Plug-In per i Game. | |
Membri privati statici | |
| int | SharedObjectLibrarySelector (const struct dirent *) |
| Metodo per la selezione delle Shared Object Library da una Directory. | |
Attributi privati | |
| list< ConnectionHandler * > | connHandPool |
Pool (lista) di Handler (ConnectionHandler) di Connessioni attive. | |
| vector< Game * > | activeGames |
Vettore dei Game istanziati. | |
| vector< pair< string, TFactory< Game * > * > * > | availableGames |
Vettore dei Game disponibili (caricati a Run-Time come Plug-In). | |
| string | pluginGameDirPath |
| Path della Directory contenente i Plug-In dei Game. | |
|
||||||||||||||||
|
|
|
|
Distruttore della Classe Server.
Si occupa di Eliminare tutti i Definizione alla linea 29 del file Server.cc. Riferimenti activeGames, e connHandPool.
00029 {
00030 connHandPool.clear();
00031 activeGames.clear();
00032 }
|
|
|
Caricamento delle Classi Plug-In per i Game. Cerca e Carica le Shared Object Library dei Game disponibili. La Directory in cui cercare i Plug-In sara' quella specificata all'istanziazione del Server Definizione alla linea 104 del file Server.cc. Riferimenti availableGames, TFactory< T >::build(), Game::getName(), pluginGameDirPath, e SharedObjectLibrarySelector().
00104 {
00105 struct dirent **directory; // Struttura per la lettura della directory
00106 string fileName;
00107 int numFoundedFile;
00108 TFactory<Game *> *factoryPointer;
00109 Game *gamePointer;
00110 pair< string, TFactory<Game *> *> *pairPointer;
00111
00112 cout << "<Server msg> Searching for SO Plug-In Game in \"" <<
00113 pluginGameDirPath << "\"" << endl;
00114
00115 /* Ricerca ".so" */
00116 numFoundedFile = scandir(pluginGameDirPath.data(), &directory,
00117 Server::SharedObjectLibrarySelector, alphasort);
00118
00119 /* Per ogni ".so" trovata istanziamo la relativa TFactory */
00120 for( int i = 0; i < numFoundedFile; i++ ) {
00121 fileName = directory[i]->d_name;
00122 cout << "<Server msg> Founded SO Plug-In Game: " << fileName << endl;
00123
00124 /* Creazione TFactory per il Plug-In */
00125 try {
00126 factoryPointer = new TFactory<Game *> (string(pluginGameDirPath + "/" + fileName));
00127 }
00128 catch ( TFactoryException &e ) {
00129 cout << "<Server msg> Error during Plug-In Loading: " <<
00130 e.getExceptionMessage() << endl;
00131 exit (1);
00132 }
00133
00134 /* Creazione Oggetto Game per leggere il relativo Name */
00135 gamePointer = factoryPointer->build();
00136
00137 /* Caricamento del Game tra quelli disponibili */
00138 pairPointer = new pair< string, TFactory<Game *> *> (
00139 gamePointer->getName(),
00140 factoryPointer );
00141 availableGames.push_back( pairPointer );
00142
00143 delete gamePointer;
00144 }
00145 cout << "<Server msg> Founded " << numFoundedFile
00146 << " Plug-In Game(s)" << endl;
00147 }
|
Questo è il grafo delle chiamate per questa funzione:

|
||||||||||||
|
|
|
|
Referenziato da main(). |
|
|
Metodo per la selezione delle Shared Object Library da una Directory.
E' una funzione utilizzata da
Definizione alla linea 87 del file Server.cc. Referenziato da loadPlugInGames().
00087 {
00088 string fileName = dir->d_name;
00089 string extension;
00090 if( fileName.size() < 3 ) /* Esclude anche i file ".", ".." */
00091 return 0;
00092 extension = fileName.substr( fileName.size()-3, fileName.size() );
00093 if( extension != ".so" )
00094 return 0;
00095 else
00096 return 1;
00097 }
|
|
|
Vettore dei
Definizione alla linea 56 del file Server.h. Referenziato da ~Server(). |
|
|
Vettore dei Il Vettore e' costituito di coppie: (, ). Definizione alla linea 60 del file Server.h. Referenziato da loadPlugInGames(). |
|
|
Pool (lista) di Handler (
Definizione alla linea 54 del file Server.h. Referenziato da ~Server(). |
|
|
Path della Directory contenente i Plug-In dei Game.
Definizione alla linea 62 del file Server.h. Referenziato da loadPlugInGames(). |
1.3.4