#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(). |