[Pkg-running-devel] [antpm] 18/48: ant: don't allow running AntMessenger event loop in background thread

Kristof Ralovich ralovich-guest at moszumanska.debian.org
Mon Aug 11 10:10:32 UTC 2014


This is an automated email from the git hooks/post-receive script.

ralovich-guest pushed a commit to branch upstream
in repository antpm.

commit 3e2c58484145dc9fffb9733fc1f6317f53f9870e
Author: RALOVICH, Kristof <tade60 at freemail.hu>
Date:   Wed Mar 26 12:51:46 2014 +0100

    ant: don't allow running AntMessenger event loop in background thread
    
    the code was never properly tested
---
 src/AntFr310XT.cpp       | 16 ++++++++--------
 src/AntFr310XT.hpp       |  4 +---
 src/AntFr405.cpp         |  8 +++-----
 src/AntFr405.hpp         |  4 +---
 src/AntMessenger.cpp     |  5 +++--
 src/AntMessenger.hpp     |  2 +-
 src/antpm-downloader.cpp |  4 ++--
 src/tests/sm1.cpp        |  8 ++++----
 8 files changed, 23 insertions(+), 28 deletions(-)

diff --git a/src/AntFr310XT.cpp b/src/AntFr310XT.cpp
index 576f5d8..5ee2d6f 100644
--- a/src/AntFr310XT.cpp
+++ b/src/AntFr310XT.cpp
@@ -76,17 +76,16 @@ struct AntFr310XT_EventLoop
   void* rv;
 };
 
-AntFr310XT::AntFr310XT(bool eventLoopInBgTh, Serial *s)
-  //: m_serial(new ANTPM_SERIAL_IMPL())
+/// s[in] allocated by "new"
+AntFr310XT::AntFr310XT(Serial *s)
   : m_serial(s?s:Serial::instantiate())
-  , m_antMessenger(new AntMessenger(eventLoopInBgTh))
+  , m_antMessenger(new AntMessenger())
   , state(ST_ANTFS_0)
   , m_eventThKill(0)
   , m_restartCount(0)
   , aplc(getConfigFolder()+std::string("antparse_")+getDateString()+".txt")
   , clientSN(0)
   , pairedKey(0)
-  , m_eventLoopInBgTh(eventLoopInBgTh)
   , doPairing(false)
   , mode(MD_DOWNLOAD_ALL)
 {
@@ -103,8 +102,10 @@ AntFr310XT::AntFr310XT(bool eventLoopInBgTh, Serial *s)
 
 AntFr310XT::~AntFr310XT()
 {
-  if(m_antMessenger) m_antMessenger->setCallback(0);
-  //m_antMessenger->setHandler(0);
+  if(m_antMessenger)
+  {
+    m_antMessenger->setCallback(0);
+  }
 
   m_eventThKill=1;
   m_eventTh.join();
@@ -183,8 +184,7 @@ AntFr310XT::start()
 
   changeState(ST_ANTFS_START0);
 
-  if(!m_eventLoopInBgTh)
-    m_antMessenger->eventLoop();
+  m_antMessenger->eventLoop();
 }
 
 void AntFr310XT::stop()
diff --git a/src/AntFr310XT.hpp b/src/AntFr310XT.hpp
index cf3c8b9..1f6d175 100644
--- a/src/AntFr310XT.hpp
+++ b/src/AntFr310XT.hpp
@@ -33,7 +33,7 @@ struct AntFr310XT_EventLoop;
 class AntFr310XT: public AntCallback
 {
 public:
-  AntFr310XT(bool eventLoopInBgTh = true, Serial* s = NULL);
+  AntFr310XT(Serial* s = NULL);
   virtual ~AntFr310XT();
 
   void setModeForcePairing() { doPairing=true; }
@@ -80,8 +80,6 @@ protected:
   std::string clientDevName;
   uint64_t    pairedKey;
 
-  bool m_eventLoopInBgTh;
-
   bool        doPairing;
   std::string folder;
   int         mode;
diff --git a/src/AntFr405.cpp b/src/AntFr405.cpp
index 0db264a..afe8ae5 100644
--- a/src/AntFr405.cpp
+++ b/src/AntFr405.cpp
@@ -76,13 +76,12 @@ struct AntFr405_EventLoop
   void* rv;
 };
 
-AntFr405::AntFr405(bool eventLoopInBgTh)
+AntFr405::AntFr405()
   : m_serial(new ANTPM_SERIAL_IMPL())
-  , m_antMessenger(new AntMessenger(eventLoopInBgTh))
+  , m_antMessenger(new AntMessenger())
   , aplc(getConfigFolder()+std::string("antparse_")+getDateString()+".txt")
   , clientSN(0)
   , pairedKey(0)
-  , m_eventLoopInBgTh(eventLoopInBgTh)
   , doPairing(false)
   , mode(MD_DOWNLOAD_ALL)
 {
@@ -179,8 +178,7 @@ AntFr405::start()
 
   changeState(ST_ANTFS_START0);
 
-  if(!m_eventLoopInBgTh)
-    m_antMessenger->eventLoop();
+  m_antMessenger->eventLoop();
 }
 
 void AntFr405::stop()
diff --git a/src/AntFr405.hpp b/src/AntFr405.hpp
index 3005d02..d29b1e8 100644
--- a/src/AntFr405.hpp
+++ b/src/AntFr405.hpp
@@ -33,7 +33,7 @@ struct AntFr405_EventLoop;
 class AntFr405: public AntCallback
 {
 public:
-  AntFr405(bool eventLoopInBgTh = true);
+  AntFr405();
   virtual ~AntFr405();
 
   void setModeForcePairing() { doPairing=true; }
@@ -77,8 +77,6 @@ protected:
   std::string clientDevName;
   uint64_t    pairedKey;
 
-  bool m_eventLoopInBgTh;
-
   bool        doPairing;
   std::string folder;
   int         mode;
diff --git a/src/AntMessenger.cpp b/src/AntMessenger.cpp
index b6f0ce6..dbaa40b 100644
--- a/src/AntMessenger.cpp
+++ b/src/AntMessenger.cpp
@@ -56,11 +56,11 @@ struct AntMessenger_Recevier
 };
 
 
-AntMessenger::AntMessenger(bool eventLoopInBgTh)
+AntMessenger::AntMessenger()
   : m_io(0)
   , m_cb(0)
   , m_packerThKill(0)
-  , m_rpackQueue2(eventLoopInBgTh)
+  , m_rpackQueue2()
 {
   m_packerThKill = 0;
   AntMessenger_Recevier msgTh;
@@ -77,6 +77,7 @@ AntMessenger::AntMessenger(bool eventLoopInBgTh)
 
 AntMessenger::~AntMessenger()
 {
+  m_rpackQueue2.setOnDataArrivedCallback(0);
   m_packerThKill = 1;
   m_packerTh.join();
   m_io=0;
diff --git a/src/AntMessenger.hpp b/src/AntMessenger.hpp
index 2bc9fab..de842ac 100644
--- a/src/AntMessenger.hpp
+++ b/src/AntMessenger.hpp
@@ -109,7 +109,7 @@ struct AntMessenger_Recevier;
 class AntMessenger
 {
 public:
-  AntMessenger(bool eventLoopInBgTh = true);
+  AntMessenger();
   ~AntMessenger();
   void setHandler(Serial* io){m_io=io;}
   void setCallback(AntCallback* cb){m_cb=cb;}
diff --git a/src/antpm-downloader.cpp b/src/antpm-downloader.cpp
index 867b751..c4b13e0 100644
--- a/src/antpm-downloader.cpp
+++ b/src/antpm-downloader.cpp
@@ -217,7 +217,7 @@ main(int argc, char** argv)
   if(false && isAntpm405Override())
   {
     logger() << "\n\nApplying ANTPM_405 override mode!\n\n\n";
-    AntFr405 watch2(false);
+    AntFr405 watch2;
     stopFunc = boost::bind(&AntFr405::stopAsync, &watch2);
     {
       watch2.setModeDownloadAll();
@@ -234,7 +234,7 @@ main(int argc, char** argv)
   }
   else
   {
-    AntFr310XT watch2(false);
+    AntFr310XT watch2;
     stopFunc = boost::bind(&AntFr310XT::stopAsync, &watch2);
     {
       watch2.setModeDownloadAll();
diff --git a/src/tests/sm1.cpp b/src/tests/sm1.cpp
index 98c878d..653019d 100644
--- a/src/tests/sm1.cpp
+++ b/src/tests/sm1.cpp
@@ -253,7 +253,7 @@ BOOST_AUTO_TEST_CASE(test_asio)
   {
     //SerialTester st;
     SerialTester1* st = new SerialTester1();
-    AntFr310XT watch2(false, st);
+    AntFr310XT watch2(st);
 
     boost::asio::io_service io_service;
     std::cout << "io_service=" << &io_service << endl;
@@ -308,7 +308,7 @@ BOOST_AUTO_TEST_CASE(test_serial0)
   antpm::Log::instance()->setLogReportingLevel(antpm::LOG_DBG3);
 
   Serial* st = new SerialTester0();
-  AntFr310XT watch2(false, st);
+  AntFr310XT watch2(st);
 
   watch2.start();
 
@@ -320,7 +320,7 @@ BOOST_AUTO_TEST_CASE(test_serial1)
   antpm::Log::instance()->setLogReportingLevel(antpm::LOG_DBG3);
 
   Serial* st = new SerialTester1();
-  AntFr310XT watch2(false, st);
+  AntFr310XT watch2(st);
 
   watch2.start();
 
@@ -332,7 +332,7 @@ BOOST_AUTO_TEST_CASE(test_serial2)
   antpm::Log::instance()->setLogReportingLevel(antpm::LOG_DBG3);
 
   Serial* st = new SerialTester2();
-  AntFr310XT watch2(false, st);
+  AntFr310XT watch2(st);
 
   watch2.start();
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-running/antpm.git



More information about the Pkg-running-devel mailing list