diff --git a/src/audiomixerboard.cpp b/src/audiomixerboard.cpp index fe0e8596..2a87897c 100755 --- a/src/audiomixerboard.cpp +++ b/src/audiomixerboard.cpp @@ -90,7 +90,7 @@ CChannelFader::CChannelFader ( QWidget* pNW, pLabel->setAccessibleName ( "Mixer level label (fader tag)" ); - // connections ------------------------------------------------------------- + // Connections ------------------------------------------------------------- QObject::connect ( pFader, SIGNAL ( valueChanged ( int ) ), this, SLOT ( OnGainValueChanged ( int ) ) ); @@ -299,7 +299,7 @@ CAudioMixerBoard::CAudioMixerBoard ( QWidget* parent, Qt::WindowFlags ) : pMainLayout->addItem ( new QSpacerItem ( 0, 0, QSizePolicy::Expanding ) ); - // connections ------------------------------------------------------------- + // Connections ------------------------------------------------------------- // CODE TAG: MAX_NUM_CHANNELS_TAG // make sure we have MAX_NUM_CHANNELS connections!!! QObject::connect ( vecpChanFader[0], SIGNAL ( gainValueChanged ( double ) ), this, SLOT ( OnGainValueChangedCh0 ( double ) ) ); diff --git a/src/channel.cpp b/src/channel.cpp index c362a0dd..cc36a73d 100755 --- a/src/channel.cpp +++ b/src/channel.cpp @@ -53,7 +53,7 @@ CChannel::CChannel ( const bool bNIsServer ) : ResetName(); - // connections ------------------------------------------------------------- + // Connections ------------------------------------------------------------- QObject::connect ( &Protocol, SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessage ( CVector ) ) ); @@ -553,7 +553,7 @@ int CChannel::GetUploadRateKbps() // CConnectionLessChannel implementation *************************************** CConnectionLessChannel::CConnectionLessChannel() { - // connections ------------------------------------------------------------- + // Connections ------------------------------------------------------------- QObject::connect ( &Protocol, SIGNAL ( CLMessReadyForSending ( CHostAddress, CVector ) ), SIGNAL ( CLMessReadyForSending ( CHostAddress, CVector ) ) ); diff --git a/src/client.cpp b/src/client.cpp index 4497c791..a788f0af 100755 --- a/src/client.cpp +++ b/src/client.cpp @@ -83,7 +83,7 @@ CClient::CClient ( const quint16 iPortNumber ) : #endif - // connections ------------------------------------------------------------- + // Connections ------------------------------------------------------------- // connection for protocol QObject::connect ( &Channel, SIGNAL ( MessReadyForSending ( CVector ) ), diff --git a/src/clientsettingsdlg.cpp b/src/clientsettingsdlg.cpp index 3c7944a1..f0bfdbae 100755 --- a/src/clientsettingsdlg.cpp +++ b/src/clientsettingsdlg.cpp @@ -31,7 +31,7 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent, { setupUi ( this ); - // add help text to controls ----------------------------------------------- + // Add help text to controls ----------------------------------------------- // jitter buffer QString strJitterBufferSize = tr ( "Jitter Buffer Size: The jitter " "buffer compensates for network and sound card timing jitters. The " diff --git a/src/connectdlg.cpp b/src/connectdlg.cpp index c6a29243..92fc3869 100755 --- a/src/connectdlg.cpp +++ b/src/connectdlg.cpp @@ -33,7 +33,7 @@ CConnectDlg::CConnectDlg ( CClient* pNCliP, QWidget* parent, setupUi ( this ); - // add help text to controls ----------------------------------------------- + // Add help text to controls ----------------------------------------------- // TODO diff --git a/src/llconclientdlg.cpp b/src/llconclientdlg.cpp index 3a6c9122..de3960c6 100755 --- a/src/llconclientdlg.cpp +++ b/src/llconclientdlg.cpp @@ -55,7 +55,7 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP, { setupUi ( this ); - // add help text to controls ----------------------------------------------- + // Add help text to controls ----------------------------------------------- // input level meter QString strInpLevH = tr ( "Input Level Meter: The input level " "indicators show the current input level of the two stereo channels " diff --git a/src/main.cpp b/src/main.cpp index eafc2d18..99e27085 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -49,19 +49,21 @@ int main ( int argc, char** argv ) bool bUseGUI = true; bool bConnectOnStartup = false; bool bDisalbeLEDs = false; + bool bIsCentralServer = false; quint16 iPortNumber = LLCON_DEFAULT_PORT_NUMBER; std::string strIniFileName = ""; std::string strHTMLStatusFileName = ""; std::string strServerName = ""; std::string strLoggingFileName = ""; std::string strHistoryFileName = ""; + std::string strCentralServer = ""; // QT docu: argv()[0] is the program name, argv()[1] is the first // argument and argv()[argc()-1] is the last argument. // Start with first argument, therefore "i = 1" for ( int i = 1; i < argc; i++ ) { - // server mode flag ---------------------------------------------------- + // Server mode flag ---------------------------------------------------- if ( GetFlagArgument ( argv, i, "-s", "--server" ) ) { bIsClient = false; @@ -70,7 +72,7 @@ int main ( int argc, char** argv ) } - // use GUI flag -------------------------------------------------------- + // Use GUI flag -------------------------------------------------------- if ( GetFlagArgument ( argv, i, "-n", "--nogui" ) ) { bUseGUI = false; @@ -79,7 +81,7 @@ int main ( int argc, char** argv ) } - // disable LEDs flag --------------------------------------------------- + // Disable LEDs flag --------------------------------------------------- if ( GetFlagArgument ( argv, i, "-d", "--disableleds" ) ) { bDisalbeLEDs = true; @@ -88,7 +90,7 @@ int main ( int argc, char** argv ) } - // use logging --------------------------------------------------------- + // Use logging --------------------------------------------------------- if ( GetStringArgument ( argc, argv, i, "-l", "--log", strArgument ) ) { strLoggingFileName = strArgument; @@ -97,7 +99,7 @@ int main ( int argc, char** argv ) } - // port number --------------------------------------------------------- + // Port number --------------------------------------------------------- if ( GetNumericArgument ( argc, argv, i, "-p", "--port", 0, 65535, rDbleArgument ) ) { @@ -132,7 +134,16 @@ int main ( int argc, char** argv ) } - // initialization file ------------------------------------------------- + // Central server ------------------------------------------------------ + if ( GetStringArgument ( argc, argv, i, "-e", "--centralserver", strArgument ) ) + { + strCentralServer = strArgument; + cout << "- central server: " << strCentralServer << std::endl; + continue; + } + + + // Initialization file ------------------------------------------------- if ( GetStringArgument ( argc, argv, i, "-i", "--inifile", strArgument ) ) { strIniFileName = strArgument; @@ -141,7 +152,7 @@ int main ( int argc, char** argv ) } - // connect on startup -------------------------------------------------- + // Connect on startup -------------------------------------------------- if ( GetFlagArgument ( argv, i, "-c", "--connect" ) ) { bConnectOnStartup = true; @@ -150,7 +161,7 @@ int main ( int argc, char** argv ) } - // help (usage) flag --------------------------------------------------- + // Help (usage) flag --------------------------------------------------- if ( ( !strcmp ( argv[i], "--help" ) ) || ( !strcmp ( argv[i], "-h" ) ) || ( !strcmp ( argv[i], "-?" ) ) ) { @@ -159,7 +170,7 @@ int main ( int argc, char** argv ) exit ( 1 ); } - // unknown option ------------------------------------------------------ + // Unknown option ------------------------------------------------------ cerr << argv[0] << ": "; cerr << "Unknown option '" << argv[i] << "' -- use '--help' for help" << endl; @@ -171,6 +182,15 @@ int main ( int argc, char** argv ) #endif } + // per definition: if we are in server mode and the central server address + // is the localhost address, we are in central server mode + if ( !bIsClient && !strCentralServer.empty() ) + { + bIsCentralServer = + ( !strCentralServer.compare ( "localhost" ) || + !strCentralServer.compare ( "127.0.0.1" ) ); + } + // Application object QApplication app ( argc, argv, bUseGUI ); @@ -201,18 +221,7 @@ int main ( int argc, char** argv ) { if ( bIsClient ) { - -/* -// TEST run client and server at the same time -CServer Server ( strLoggingFileName.c_str(), - iPortNumber, - strHTMLStatusFileName.c_str(), - strHistoryFileName.c_str(), - strServerName.c_str() ); -*/ - - - // client + // Client: // actual client object CClient Client ( iPortNumber ); @@ -250,7 +259,7 @@ CServer Server ( strLoggingFileName.c_str(), } else { - // server + // Server: // actual server object // TODO use QString @@ -259,7 +268,9 @@ CServer Server ( strLoggingFileName.c_str(), iPortNumber, strHTMLStatusFileName.c_str(), strHistoryFileName.c_str(), - strServerName.c_str() ); + strServerName.c_str(), + bIsCentralServer, + strCentralServer.c_str() ); if ( bUseGUI ) { @@ -313,21 +324,20 @@ std::string UsageArguments ( char **argv ) "Usage: " + std::string ( argv[0] ) + " [option] [argument]\n" "Recognized options:\n" " -s, --server start server\n" - " -n, --nogui disable GUI (only avaiable for server)\n" + " -n, --nogui disable GUI (server only)\n" " -l, --log enable logging, set file name\n" - " -i, --inifile initialization file name (only available for\n" - " client)\n" - " -p, --port local port number (only avaiable for server)\n" - " -m, --htmlstatus enable HTML status file, set file name (only\n" - " available for server)\n" - " -a, --servername server name required for HTML status (only\n" - " available for server)\n" + " -i, --inifile initialization file name (client only)\n" + " -p, --port local port number (server only)\n" + " -m, --htmlstatus enable HTML status file, set file name (server\n" + " only)\n" + " -a, --servername server name, required for HTML status (server\n" + " only)\n" " -y, --history enable connection history and set file\n" - " name (only available for server)\n" - " -c, --connect connect to last server on startup (only\n" - " available for client)\n" - " -d, --disableleds disable LEDs in main window (only available\n" - " for client)\n" + " name (server only)\n" + " -e, --centralserver address of the central server (server only)\n" + " -c, --connect connect to last server on startup (client\n" + " only)\n" + " -d, --disableleds disable LEDs in main window (client only)\n" " -h, -?, --help this help text\n" "Example: " + std::string ( argv[0] ) + " -l -inifile myinifile.ini\n"; } diff --git a/src/protocol.cpp b/src/protocol.cpp index 7c26b1f8..d7d14705 100755 --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -239,7 +239,8 @@ CProtocol::CProtocol() { Reset(); - // connections + + // Connections ------------------------------------------------------------- QObject::connect ( &TimerSendMess, SIGNAL ( timeout() ), this, SLOT ( OnTimerSendMess() ) ); } diff --git a/src/server.cpp b/src/server.cpp index c8cee8fc..82bb1b3f 100755 --- a/src/server.cpp +++ b/src/server.cpp @@ -168,9 +168,12 @@ CServer::CServer ( const QString& strLoggingFileName, const quint16 iPortNumber, const QString& strHTMLStatusFileName, const QString& strHistoryFileName, - const QString& strServerNameForHTMLStatusFile ) : + const QString& strServerNameForHTMLStatusFile, + const bool bIsCentralServer, + const QString& strCentralServer ) : Socket ( this, iPortNumber ), - bWriteStatusHTMLFile ( false ) + bWriteStatusHTMLFile ( false ), + ServerListManager ( bIsCentralServer ) // enable server list for central server { int i; @@ -267,7 +270,7 @@ CServer::CServer ( const QString& strLoggingFileName, } - // connections ------------------------------------------------------------- + // Connections ------------------------------------------------------------- // connect timer timeout signal QObject::connect ( &HighPrecisionTimer, SIGNAL ( timeout() ), this, SLOT ( OnTimer() ) ); @@ -804,7 +807,7 @@ void CServer::CreateAndSendChanListForThisChan ( const int iCurChanID ) void CServer::CreateAndSendChatTextForAllConChannels ( const int iCurChanID, const QString& strChatText ) { - // create message which is sent to all connected clients ------------------- + // Create message which is sent to all connected clients ------------------- // get client name, if name is empty, use IP address instead QString ChanName = vecChannels[iCurChanID].GetName(); if ( ChanName.isEmpty() ) @@ -823,7 +826,7 @@ void CServer::CreateAndSendChatTextForAllConChannels ( const int iCurChanID, " " + strChatText; - // send chat text to all connected clients --------------------------------- + // Send chat text to all connected clients --------------------------------- for ( int i = 0; i < USED_NUM_CHANNELS; i++ ) { if ( vecChannels[i].IsConnected() )