main.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include <QtCore/QCoreApplication>
  2. #include <QtCore/QDate>
  3. #include "webservercontrol.h"
  4. #include "mysingalthreadtimer.h"
  5. #include "qsettings.h"
  6. #include <httpserver/httplistener.h>
  7. #include "requesthandler.h"
  8. #include "platformthread.h"
  9. #include <QDir>
  10. QString searchConfigFile()
  11. {
  12. QString binDir=QCoreApplication::applicationDirPath();
  13. QString appName=QCoreApplication::applicationName();
  14. QString fileName("Demo1.ini");
  15. QStringList searchList;
  16. searchList.append(binDir);
  17. searchList.append(binDir+"/etc");
  18. searchList.append(binDir+"/../etc");
  19. searchList.append(binDir+"/../../etc");
  20. searchList.append(binDir+"/../"+appName+"/etc");
  21. searchList.append(binDir+"/../../"+appName+"/etc");
  22. searchList.append(QDir::rootPath()+"etc/opt");
  23. searchList.append(QDir::rootPath()+"etc");
  24. foreach (QString dir, searchList)
  25. {
  26. QFile file(dir+"/"+fileName);
  27. if (file.exists())
  28. {
  29. fileName=QDir(file.fileName()).canonicalPath();
  30. qDebug("Using config file %s",qPrintable(fileName));
  31. return fileName;
  32. }
  33. }
  34. // not found
  35. foreach (QString dir, searchList)
  36. {
  37. qWarning("%s/%s not found",qPrintable(dir),qPrintable(fileName));
  38. }
  39. qFatal("Cannot find config file %s",qPrintable(fileName));
  40. return nullptr;
  41. }
  42. int main(int argc, char *argv[])
  43. {
  44. QCoreApplication a(argc, argv);
  45. QString configFileName=searchConfigFile();
  46. QSettings* listenerSettings=new QSettings(configFileName,QSettings::IniFormat,&a);
  47. listenerSettings->beginGroup("listener");
  48. // Configure and start the TCP listener
  49. new HttpListener(listenerSettings,new RequestHandler(&a),&a);
  50. WebServerControl::GetInstance()->InitQWebSocketServer(6789);
  51. MySingalThreadTimer::GetInstance()->InitTimerObjects();
  52. PlatformThread threadrun;
  53. threadrun.start(QThread::HighestPriority);
  54. return a.exec();
  55. }