Riferimenti per la classe Server

#include <Server.h>

Diagramma delle classi per Server

Inheritance graph
[legenda]
Diagramma di collaborazione per Server:

Collaboration graph
[legenda]
Lista di tutti i membri.

Descrizione Dettagliata

Server per MGS.

Classe principale di MGS. Ha il compito di:

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.


Documentazione dei costruttori e dei distruttori

Server::Server const InetAddress &  ,
const   tpport_t,
const   string
 

Server::~Server void   )  [virtual]
 

Distruttore della Classe Server.

Si occupa di Eliminare tutti i ConnectionHandler e tutti i Game istanziati.

Definizione alla linea 29 del file Server.cc.

Riferimenti activeGames, e connHandPool.

00029                     {
00030    connHandPool.clear();
00031    activeGames.clear();
00032 }


Documentazione delle funzioni membro

void Server::loadPlugInGames void   )  [private]
 

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:

bool Server::onAccept const InetHostAddress &  ,
const   tpport_t
[private]
 

void Server::run const   timeout_t = TIMEOUT_INF  ) 
 

Referenziato da main().

int Server::SharedObjectLibrarySelector const struct dirent *  dir  )  [static, private]
 

Metodo per la selezione delle Shared Object Library da una Directory.

E' una funzione utilizzata da scandir (inclusa in dirent.h ) per trovare tutte le librerie ".so" di una directory data.

Parametri:
dir Prende in input un puntatore a struct dirent
Restituisce:
Restituisce il numero di SO trovate

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 }


Documentazione dei dati membri

vector<Game *> Server::activeGames [private]
 

Vettore dei Game istanziati.

Definizione alla linea 56 del file Server.h.

Referenziato da ~Server().

vector< pair< string, TFactory<Game*> *> *> Server::availableGames [private]
 

Vettore dei Game disponibili (caricati a Run-Time come Plug-In).

Il Vettore e' costituito di coppie: (, ).

Definizione alla linea 60 del file Server.h.

Referenziato da loadPlugInGames().

list<ConnectionHandler *> Server::connHandPool [private]
 

Pool (lista) di Handler (ConnectionHandler) di Connessioni attive.

Definizione alla linea 54 del file Server.h.

Referenziato da ~Server().

string Server::pluginGameDirPath [private]
 

Path della Directory contenente i Plug-In dei Game.

Definizione alla linea 62 del file Server.h.

Referenziato da loadPlugInGames().


La documentazione per questa classe è stata generata a partire dai seguenti file:
Generato il Sun Nov 28 13:27:31 2004 per MGS - Multithreaded Game Server da doxygen 1.3.4