question: public void invokeHookSpoutAck ( Object messageId , long completeLatencyNs ) { if ( taskHooks . size ( ) != 0 ) { SpoutAckInfo ackInfo = new SpoutAckInfo ( messageId , getThisTaskId ( ) , completeLatencyNs / Constants . MILLISECONDS_TO_NANOSECONDS ) ; for ( ITaskHook taskHook : taskHooks ) { taskHook . spoutAck ( ackInfo ) ; } } }
target:  Task hook called in spout every time a tuple gets acked