From: Pierre-Luc B. <pie...@sa...> - 2009-07-14 15:18:27
|
Calling leave() makes our application to wait for 10 sec. This can be a problem as a user might want to restart the application during that 10sec time frame. From eventloop.cpp, I see that: int wait_min = 10000; 158 159 DefaultTimeouts::iterator ti; 160 161 _mutex_t.lock(); 162 163 for (ti = _timeouts.begin(); ti != _timeouts.end(); ++ti) { 164 if ( (*ti)->enabled() && (*ti)->interval() < wait_min) 165 wait_min = (*ti)->interval(); 166 } 167 168 _mutex_t.unlock(); 169 170 poll (fds, nfd, wait_min); >From what I get of this portion of code, it loops to find the DefaultTimeout with the smallest time interval, then poll with that value. Is this meant to be used internally for dbus-c++ only or could we add_timeout(Timeout::Internal *) without fear of breaking the eventloop mechanism ? Since: while (_running) { do_iteration(); } in enter() (eventloop-integration.cpp) and: void BusDispatcher::leave() { _running = false; } wouldn't it be better to think of another way to leave the event loop in a more instantaneous manner ? Pierre-Luc Bacon, Savoir-Faire Linux http://www.sflphone.org |
From: Redouane S. <red...@fr...> - 2009-07-14 18:05:36
|
I already submitted a patch for that but it was for an old version of libdbus-c++. The way to fix this issue is to add a file descriptor (a pipe) to the file descriptors we poll (fds). Then when we call leave() function we write in the pipe and it'll unblock the poll call. Regards. -----Message d'origine----- De : Pierre-Luc Bacon [mailto:pie...@sa...] Envoyé : mardi 14 juillet 2009 17:01 À : dbu...@li... Objet : [dbus-cplusplus-devel] leave() timeout Calling leave() makes our application to wait for 10 sec. This can be a problem as a user might want to restart the application during that 10sec time frame. From eventloop.cpp, I see that: int wait_min = 10000; 158 159 DefaultTimeouts::iterator ti; 160 161 _mutex_t.lock(); 162 163 for (ti = _timeouts.begin(); ti != _timeouts.end(); ++ti) { 164 if ( (*ti)->enabled() && (*ti)->interval() < wait_min) 165 wait_min = (*ti)->interval(); 166 } 167 168 _mutex_t.unlock(); 169 170 poll (fds, nfd, wait_min); >From what I get of this portion of code, it loops to find the DefaultTimeout with the smallest time interval, then poll with that value. Is this meant to be used internally for dbus-c++ only or could we add_timeout(Timeout::Internal *) without fear of breaking the eventloop mechanism ? Since: while (_running) { do_iteration(); } in enter() (eventloop-integration.cpp) and: void BusDispatcher::leave() { _running = false; } wouldn't it be better to think of another way to leave the event loop in a more instantaneous manner ? Pierre-Luc Bacon, Savoir-Faire Linux http://www.sflphone.org ---------------------------------------------------------------------------- -- Enter the BlackBerry Developer Challenge This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/Challenge _______________________________________________ dbus-cplusplus-devel mailing list dbu...@li... https://lists.sourceforge.net/lists/listinfo/dbus-cplusplus-devel |
From: Pierre-Luc B. <pie...@sa...> - 2009-07-17 23:18:15
|
This solution was implemented and a new patch was made: https://sourceforge.net/tracker/?func=detail&aid=2823377&group_id=236997&atid=1101684 On Tue, 2009-07-14 at 20:17 +0200, Redouane SOUM wrote: > I already submitted a patch for that but it was for an old version of > libdbus-c++. > > The way to fix this issue is to add a file descriptor (a pipe) to the file > descriptors we poll (fds). > Then when we call leave() function we write in the pipe and it'll unblock > the poll call. > > Regards. > > > > -----Message d'origine----- > De : Pierre-Luc Bacon [mailto:pie...@sa...] > Envoyé : mardi 14 juillet 2009 17:01 > À : dbu...@li... > Objet : [dbus-cplusplus-devel] leave() timeout > > Calling leave() makes our application to wait for 10 sec. This can be a > problem as a user might want to restart the application during that > 10sec time frame. From eventloop.cpp, I see that: > > int wait_min = 10000; > 158 > 159 DefaultTimeouts::iterator ti; > 160 > 161 _mutex_t.lock(); > 162 > 163 for (ti = _timeouts.begin(); ti != _timeouts.end(); ++ti) { > 164 if ( (*ti)->enabled() && (*ti)->interval() < wait_min) > 165 wait_min = (*ti)->interval(); > 166 } > 167 > 168 _mutex_t.unlock(); > 169 > 170 poll (fds, nfd, wait_min); > > >From what I get of this portion of code, it loops to find the > DefaultTimeout with the smallest time interval, then poll with that > value. > > Is this meant to be used internally for dbus-c++ only or could we > add_timeout(Timeout::Internal *) without fear of breaking the eventloop > mechanism ? > > Since: > > while (_running) { > do_iteration(); > } > > in enter() (eventloop-integration.cpp) and: > > void BusDispatcher::leave() > { > _running = false; > } > > wouldn't it be better to think of another way to leave the event loop in > a more instantaneous manner ? > > Pierre-Luc Bacon, > Savoir-Faire Linux > http://www.sflphone.org > > > ---------------------------------------------------------------------------- > -- > Enter the BlackBerry Developer Challenge > This is your chance to win up to $100,000 in prizes! For a limited time, > vendors submitting new applications to BlackBerry App World(TM) will have > the opportunity to enter the BlackBerry Developer Challenge. See full prize > > details at: http://p.sf.net/sfu/Challenge > _______________________________________________ > dbus-cplusplus-devel mailing list > dbu...@li... > https://lists.sourceforge.net/lists/listinfo/dbus-cplusplus-devel > > > ------------------------------------------------------------------------------ > Enter the BlackBerry Developer Challenge > This is your chance to win up to $100,000 in prizes! For a limited time, > vendors submitting new applications to BlackBerry App World(TM) will have > the opportunity to enter the BlackBerry Developer Challenge. See full prize > details at: http://p.sf.net/sfu/Challenge > _______________________________________________ > dbus-cplusplus-devel mailing list > dbu...@li... > https://lists.sourceforge.net/lists/listinfo/dbus-cplusplus-devel |
From: Andreas V. <li...@br...> - 2009-09-24 20:30:25
|
Am Fri, 17 Jul 2009 18:50:45 -0400 schrieb Pierre-Luc Bacon: Hello, Sorry that I react so late. Now I had some time to spend. But the patch doesn't apply to FDO or gitorious branch any longer. Could you adopt it to the mainline? Then I would apply it as it looks good so far after a first review. regards Andreas > This solution was implemented and a new patch was made: > https://sourceforge.net/tracker/?func=detail&aid=2823377&group_id=236997&atid=1101684 > > On Tue, 2009-07-14 at 20:17 +0200, Redouane SOUM wrote: > > I already submitted a patch for that but it was for an old version > > of libdbus-c++. > > > > The way to fix this issue is to add a file descriptor (a pipe) to > > the file descriptors we poll (fds). > > Then when we call leave() function we write in the pipe and it'll > > unblock the poll call. > > > > Regards. > > > > > > > > -----Message d'origine----- > > De : Pierre-Luc Bacon > > [mailto:pie...@sa...] Envoyé : mardi 14 > > juillet 2009 17:01 À : dbu...@li... > > Objet : [dbus-cplusplus-devel] leave() timeout > > > > Calling leave() makes our application to wait for 10 sec. This can > > be a problem as a user might want to restart the application during > > that 10sec time frame. From eventloop.cpp, I see that: > > > > int wait_min = 10000; > > 158 > > 159 DefaultTimeouts::iterator ti; > > 160 > > 161 _mutex_t.lock(); > > 162 > > 163 for (ti = _timeouts.begin(); ti != _timeouts.end(); ++ti) { > > 164 if ( (*ti)->enabled() && (*ti)->interval() < wait_min) > > 165 wait_min = (*ti)->interval(); > > 166 } > > 167 > > 168 _mutex_t.unlock(); > > 169 > > 170 poll (fds, nfd, wait_min); > > > > >From what I get of this portion of code, it loops to find the > > DefaultTimeout with the smallest time interval, then poll with that > > value. > > > > Is this meant to be used internally for dbus-c++ only or could we > > add_timeout(Timeout::Internal *) without fear of breaking the > > eventloop mechanism ? > > > > Since: > > > > while (_running) { > > do_iteration(); > > } > > > > in enter() (eventloop-integration.cpp) and: > > > > void BusDispatcher::leave() > > { > > _running = false; > > } > > > > wouldn't it be better to think of another way to leave the event > > loop in a more instantaneous manner ? > > > > Pierre-Luc Bacon, > > Savoir-Faire Linux > > http://www.sflphone.org > > > > > > ---------------------------------------------------------------------------- > > -- > > Enter the BlackBerry Developer Challenge > > This is your chance to win up to $100,000 in prizes! For a limited > > time, vendors submitting new applications to BlackBerry App > > World(TM) will have the opportunity to enter the BlackBerry > > Developer Challenge. See full prize > > > > details at: http://p.sf.net/sfu/Challenge > > _______________________________________________ > > dbus-cplusplus-devel mailing list > > dbu...@li... > > https://lists.sourceforge.net/lists/listinfo/dbus-cplusplus-devel > > > > > > ------------------------------------------------------------------------------ > > Enter the BlackBerry Developer Challenge > > This is your chance to win up to $100,000 in prizes! For a limited > > time, vendors submitting new applications to BlackBerry App > > World(TM) will have the opportunity to enter the BlackBerry > > Developer Challenge. See full prize details at: > > http://p.sf.net/sfu/Challenge > > _______________________________________________ > > dbus-cplusplus-devel mailing list > > dbu...@li... > > https://lists.sourceforge.net/lists/listinfo/dbus-cplusplus-devel > > > ------------------------------------------------------------------------------ > Enter the BlackBerry Developer Challenge > This is your chance to win up to $100,000 in prizes! For a limited > time, vendors submitting new applications to BlackBerry App World(TM) > will have the opportunity to enter the BlackBerry Developer > Challenge. See full prize details at: http://p.sf.net/sfu/Challenge > _______________________________________________ > dbus-cplusplus-devel mailing list > dbu...@li... > https://lists.sourceforge.net/lists/listinfo/dbus-cplusplus-devel |