Advertisement
Guest User

Untitled

a guest
Aug 7th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.97 KB | None | 0 0
  1. diff --git a/mythtv/libs/libmythbase/mythdbcon.cpp b/mythtv/libs/libmythbase/mythdbcon.cpp
  2. index 6bdcb09..560c0c8 100644
  3. --- a/mythtv/libs/libmythbase/mythdbcon.cpp
  4. +++ b/mythtv/libs/libmythbase/mythdbcon.cpp
  5. @@ -55,7 +55,7 @@ bool MSqlDatabase::isOpen()
  6. return false;
  7. }
  8.  
  9. -bool MSqlDatabase::OpenDatabase()
  10. +bool MSqlDatabase::OpenDatabase(bool skipdb)
  11. {
  12. if (!m_db.isValid())
  13. {
  14. @@ -68,44 +68,45 @@ bool MSqlDatabase::OpenDatabase()
  15.  
  16. if (!m_db.isOpen())
  17. {
  18. - DatabaseParams dbparms = GetMythDB()->GetDatabaseParams();
  19. - m_db.setDatabaseName(dbparms.dbName);
  20. - m_db.setUserName(dbparms.dbUserName);
  21. - m_db.setPassword(dbparms.dbPassword);
  22. - m_db.setHostName(dbparms.dbHostName);
  23. + if (!skipdb)
  24. + m_dbparms = GetMythDB()->GetDatabaseParams();
  25. + m_db.setDatabaseName(m_dbparms.dbName);
  26. + m_db.setUserName(m_dbparms.dbUserName);
  27. + m_db.setPassword(m_dbparms.dbPassword);
  28. + m_db.setHostName(m_dbparms.dbHostName);
  29.  
  30. - if (dbparms.dbHostName.isEmpty()) // Bootstrapping without a database?
  31. + if (m_dbparms.dbHostName.isEmpty()) // Bootstrapping without a database?
  32. {
  33. connected = true; // Pretend to be connected
  34. return true; // to reduce errors
  35. }
  36.  
  37. - if (dbparms.dbPort)
  38. - m_db.setPort(dbparms.dbPort);
  39. + if (m_dbparms.dbPort)
  40. + m_db.setPort(m_dbparms.dbPort);
  41.  
  42. - if (dbparms.dbPort && dbparms.dbHostName == "localhost")
  43. + if (m_dbparms.dbPort && m_dbparms.dbHostName == "localhost")
  44. m_db.setHostName("127.0.0.1");
  45.  
  46. connected = m_db.open();
  47.  
  48. - if (!connected && dbparms.wolEnabled)
  49. + if (!connected && m_dbparms.wolEnabled)
  50. {
  51. int trycount = 0;
  52.  
  53. - while (!connected && trycount++ < dbparms.wolRetry)
  54. + while (!connected && trycount++ < m_dbparms.wolRetry)
  55. {
  56. VERBOSE(VB_GENERAL, QString(
  57. "Using WOL to wakeup database server (Try %1 of %2)")
  58. - .arg(trycount).arg(dbparms.wolRetry));
  59. + .arg(trycount).arg(m_dbparms.wolRetry));
  60.  
  61. - if (myth_system(dbparms.wolCommand) != GENERIC_EXIT_OK)
  62. + if (myth_system(m_dbparms.wolCommand) != GENERIC_EXIT_OK)
  63. {
  64. VERBOSE(VB_IMPORTANT,
  65. QString("Failed to run WOL command '%1'")
  66. - .arg(dbparms.wolCommand));
  67. + .arg(m_dbparms.wolCommand));
  68. }
  69.  
  70. - sleep(dbparms.wolReconnect);
  71. + sleep(m_dbparms.wolReconnect);
  72. connected = m_db.open();
  73. }
  74.  
  75. @@ -139,6 +140,22 @@ bool MSqlDatabase::OpenDatabase()
  76. return connected;
  77. }
  78.  
  79. +bool MSqlDatabase::TestDatabase(QString dbHostName,
  80. + QString dbUserName,
  81. + QString dbPassword,
  82. + QString dbName)
  83. +{
  84. + if (dbHostName.isEmpty() || dbUserName.isEmpty())
  85. + return false;
  86. +
  87. + m_dbparms.dbName = dbName;
  88. + m_dbparms.dbUserName = dbUserName;
  89. + m_dbparms.dbPassword = dbPassword;
  90. + m_dbparms.dbHostName = dbHostName;
  91. +
  92. + return OpenDatabase(true);
  93. +}
  94. +
  95. bool MSqlDatabase::KickDatabase()
  96. {
  97. // Some explanation is called for. This exists because the mysql
  98. diff --git a/mythtv/libs/libmythbase/mythdbcon.h b/mythtv/libs/libmythbase/mythdbcon.h
  99. index 77fad59..b30f87e 100644
  100. --- a/mythtv/libs/libmythbase/mythdbcon.h
  101. +++ b/mythtv/libs/libmythbase/mythdbcon.h
  102. @@ -10,6 +10,7 @@
  103. #include <QList>
  104.  
  105. #include "mythbaseexp.h"
  106. +#include "mythdbparams.h"
  107.  
  108. class QSemaphore;
  109.  
  110. @@ -24,7 +25,19 @@ class MBASE_PUBLIC MSqlDatabase
  111.  
  112. private:
  113. bool isOpen(void);
  114. - bool OpenDatabase(void);
  115. + bool OpenDatabase(bool skipdb = false);
  116. + bool TestDatabase(QString dbHostName,
  117. + QString dbUserName,
  118. + QString dbPassword,
  119. + QString dbName = "mythconverg");
  120. +/* int dbPort = 0,
  121. + bool localEnabled = false,
  122. + QString localHostName = "localhost",
  123. + bool wolEnabled = false,
  124. + int wolReconnect = 3,
  125. + int wolRetry = 10,
  126. + QString wolCommand = QString(),
  127. + bool dbHostPing = true);*/
  128. bool KickDatabase(void);
  129. QString GetConnectionName(void) const { return m_name; }
  130. QSqlDatabase db(void) const { return m_db; }
  131. @@ -34,6 +47,7 @@ class MBASE_PUBLIC MSqlDatabase
  132. QString m_name;
  133. QSqlDatabase m_db;
  134. QDateTime m_lastDBKick;
  135. + DatabaseParams m_dbparms;
  136. };
  137.  
  138. /// \brief DB connection pool, used by MSqlQuery. Do not use directly.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement