Added 'Dump' method to the database handler and to the telnet server (Info -> Dump...
[profile/ivi/genivi/genivi-audio-manager.git] / AudioManagerDaemon / src / CAmTelnetServer.cpp
old mode 100644 (file)
new mode 100755 (executable)
index b92fad5..644b0a6
 #include <istream>
 #include <iostream>
 #include <iterator>
-#include "CAmDatabaseHandler.h"
+#include <unistd.h>
+#include <stdexcept>
+#include <cstdlib>
+#include "CAmDatabaseHandlerInterface.h"
 #include "CAmRoutingSender.h"
 #include "CAmTelnetMenuHelper.h"
 #include "shared/CAmDltWrapper.h"
@@ -45,7 +48,7 @@ CAmTelnetServer* CAmTelnetServer::mpInstance = NULL;
 
 #define PRINT_BOOL(var) var ? output+="true\t\t" : output+="false\t\t";
 
-CAmTelnetServer::CAmTelnetServer(CAmSocketHandler *iSocketHandler, CAmCommandSender *iCommandSender, CAmCommandReceiver *iCommandReceiver, CAmRoutingSender *iRoutingSender, CAmRoutingReceiver *iRoutingReceiver, CAmControlSender *iControlSender, CAmControlReceiver *iControlReceiver, CAmDatabaseHandler *iDatabasehandler, CAmRouter *iRouter, unsigned int servPort, unsigned int maxConnections) :
+CAmTelnetServer::CAmTelnetServer(CAmSocketHandler *iSocketHandler, CAmCommandSender *iCommandSender, CAmCommandReceiver *iCommandReceiver, CAmRoutingSender *iRoutingSender, CAmRoutingReceiver *iRoutingReceiver, CAmControlSender *iControlSender, CAmControlReceiver *iControlReceiver, CAmDatabaseHandlerInterface *iDatabasehandler, CAmRouter *iRouter, unsigned int servPort, unsigned int maxConnections) :
         telnetConnectFiredCB(this, &CAmTelnetServer::connectSocket), //
         telnetReceiveFiredCB(this, &CAmTelnetServer::receiveData), //
         telnetDispatchCB(this, &CAmTelnetServer::dispatchData), //
@@ -88,16 +91,21 @@ CAmTelnetServer::CAmTelnetServer(CAmSocketHandler *iSocketHandler, CAmCommandSen
     //setup the port Listener
     mConnectFD = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
     assert (mConnectFD>0);
-    setsockopt(mConnectFD, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int));
+    assert(setsockopt(mConnectFD, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int))==0);
     memset(&servAddr, 0, sizeof(servAddr));
     servAddr.sin_family = AF_INET;
     servAddr.sin_addr.s_addr = INADDR_ANY;
     servAddr.sin_port = htons(servPort);
-    bind(mConnectFD, (struct sockaddr *) &servAddr, sizeof(servAddr));
+    if(bind(mConnectFD, (struct sockaddr *) &servAddr, sizeof(servAddr))!=0)
+    {
+        logError("CAmTelnetServer::CAmTelnetServer bind failed, error",errno);
+        throw std::runtime_error("CAmTelnetServer::CAmTelnetServer bind failed");
+    }
 
     if (listen(mConnectFD, mMaxConnections) < 0)
     {
         logError("TelnetServer::TelnetServerk cannot listen ", errno);
+        throw std::runtime_error("CAmTelnetServer::CAmTelnetServer bind failed");
     }
     else
         logInfo("TelnetServer::TelnetServer started listening on port", mServerPort);
@@ -135,7 +143,7 @@ void CAmTelnetServer::connectSocket(const pollfd pfd, const sh_pollHandle_t hand
     short event = 0;
     event |= POLLIN;
 
-    //aded the filedescriptor to the sockethandler and register the callbacks for receiving the data
+    //add the filedescriptor to the sockethandler and register the callbacks for receiving the data
     mpSocketHandler->addFDPoll(connection.filedescriptor, event, NULL, &telnetReceiveFiredCB, &telnetCheckCB, &telnetDispatchCB, NULL, connection.handle);
     mListConnections.push_back(connection);
 }