Here is the code which has some issues, I get a call in the clone() method but the invoke never gets called.
Header has -
class QSearchInterruptCallback : public Poco::AbstractTimerCallback
{
virtual void invoke(Timer& timer) const;
virtual AbstractTimerCallback* clone() const;
};
Implementation has -
void QSearchInterruptCallback::invoke( Timer& timer ) const
{
printf("Calling POM_query_interrupt.\n");
if( called_interrupt() )
{
printf("Interrupting POM Query FAILED!!!\n");
}
printf("Interrupted current POM Query SUCCESSFULLY!!!\n");
}
AbstractTimerCallback* QSearchInterruptCallback::clone() const
{
printf("Calling QSearchInterruptCallback::clone()\n");
return new QSearchInterruptCallback( *this );
}
void interrupt()
{
printf("Calling interrupt()\n");
QSearchInterruptCallback interruptCallback;
Timer newTimer( 500, 0 );
newTimer.start( interruptCallback, Thread::PRIO_HIGH );
printf("Timer's start Interval is set to: %d\n", newTimer.getStartInterval());
}
Here is the output -
Calling interrupt()
Calling QSearchInterruptCallback::clone()
Timer's start Interval is set to: 5
Note: There is no output from invoke()
Please suggest what I am missing that is causing invoke not to be called.





