Commit bef5dade authored by Pavel Vainerman's avatar Pavel Vainerman

(PassiveTimer): исправление ошибки в функции millisecToPoco()

parent 5308b799
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
Name: libuniset2 Name: libuniset2
Version: 2.5 Version: 2.5
Release: alt9 Release: alt10
Summary: UniSet - library for building distributed industrial control systems Summary: UniSet - library for building distributed industrial control systems
License: LGPL License: LGPL
...@@ -486,6 +486,9 @@ mv -f %buildroot%python_sitelibdir_noarch/* %buildroot%python_sitelibdir/%oname ...@@ -486,6 +486,9 @@ mv -f %buildroot%python_sitelibdir_noarch/* %buildroot%python_sitelibdir/%oname
# .. # ..
%changelog %changelog
* Wed Sep 07 2016 Pavel Vainerman <pv@altlinux.ru> 2.5-alt10
- fixed bug in millisecToPoco() function
* Tue Sep 06 2016 Pavel Vainerman <pv@altlinux.ru> 2.5-alt9 * Tue Sep 06 2016 Pavel Vainerman <pv@altlinux.ru> 2.5-alt9
- (UNetUDP): optimization use mutex - (UNetUDP): optimization use mutex
- (unet-udp-tester): add new command line agruments - (unet-udp-tester): add new command line agruments
......
...@@ -65,7 +65,7 @@ class UniSetTimer ...@@ -65,7 +65,7 @@ class UniSetTimer
*/ */
static const timeout_t WaitUpTime = std::numeric_limits<timeout_t>::max(); static const timeout_t WaitUpTime = std::numeric_limits<timeout_t>::max();
// преобразование с учётом WaitUpTime, т.к. в Poco::Timespan вечное ожидание это "0" :( // преобразование в Poco::Timespan с учётом WaitUpTime
static const Poco::Timespan millisecToPoco( const timeout_t msec ); static const Poco::Timespan millisecToPoco( const timeout_t msec );
static const Poco::Timespan microsecToPoco( const timeout_t usec ); static const Poco::Timespan microsecToPoco( const timeout_t usec );
......
...@@ -114,16 +114,16 @@ void UniSetTimer::stop() ...@@ -114,16 +114,16 @@ void UniSetTimer::stop()
const Poco::Timespan UniSetTimer::millisecToPoco( const timeout_t msec ) const Poco::Timespan UniSetTimer::millisecToPoco( const timeout_t msec )
{ {
if( msec == WaitUpTime ) if( msec == WaitUpTime )
return Poco::Timespan(0,0); return Poco::Timespan(Poco::Timestamp::TIMEVAL_MAX,0);
// msec --> usec // msec --> usec
return Poco::Timespan( long(msec/1000), long((msec%1000)*1000) ); return Poco::Timespan( long(msec/1000), long((msec*1000)%1000000) );
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
const Poco::Timespan UniSetTimer::microsecToPoco( const timeout_t usec ) const Poco::Timespan UniSetTimer::microsecToPoco( const timeout_t usec )
{ {
if( usec == WaitUpTime ) if( usec == WaitUpTime )
return Poco::Timespan(0,0); return Poco::Timespan(Poco::Timestamp::TIMEVAL_MAX,0);
return Poco::Timespan( long(usec/1000000), long(usec%1000000) ); return Poco::Timespan( long(usec/1000000), long(usec%1000000) );
} }
......
...@@ -107,15 +107,14 @@ TEST_CASE("UniSetTimer: conv to Poco", "[PassiveTimer][poco]" ) ...@@ -107,15 +107,14 @@ TEST_CASE("UniSetTimer: conv to Poco", "[PassiveTimer][poco]" )
{ {
Poco::Timespan tm = UniSetTimer::millisecToPoco(UniSetTimer::WaitUpTime); Poco::Timespan tm = UniSetTimer::millisecToPoco(UniSetTimer::WaitUpTime);
REQUIRE( tm.seconds() == 0 ); REQUIRE( tm.seconds() == -1 );
REQUIRE( tm.microseconds() == 0 ); REQUIRE( tm.microseconds() == 0 );
} }
{ {
Poco::Timespan tm = UniSetTimer::millisecToPoco(20); Poco::Timespan tm = UniSetTimer::millisecToPoco(20);
REQUIRE( tm.seconds() == 0 ); REQUIRE( tm.seconds() == 0 );
REQUIRE( tm.milliseconds() == 20 ); REQUIRE( tm.totalMilliseconds() == 20 );
REQUIRE( tm.microseconds() == 0 );
REQUIRE( tm.totalMicroseconds() == 20000 ); REQUIRE( tm.totalMicroseconds() == 20000 );
} }
...@@ -123,7 +122,7 @@ TEST_CASE("UniSetTimer: conv to Poco", "[PassiveTimer][poco]" ) ...@@ -123,7 +122,7 @@ TEST_CASE("UniSetTimer: conv to Poco", "[PassiveTimer][poco]" )
// usec --> Poco::Timespan // usec --> Poco::Timespan
{ {
Poco::Timespan tm = UniSetTimer::microsecToPoco(UniSetTimer::WaitUpTime); Poco::Timespan tm = UniSetTimer::microsecToPoco(UniSetTimer::WaitUpTime);
REQUIRE( tm.seconds() == 0 ); REQUIRE( tm.seconds() == -1 );
REQUIRE( tm.microseconds() == 0 ); REQUIRE( tm.microseconds() == 0 );
} }
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment