[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