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);
    }
  }
}

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 ) ; } } }
task hook called in spout every time a tuple gets acked
