code: @Override
  	public final boolean packetReceived(AbstractPacket packet)
      {
          if (packet.getType() == PacketType.NOTIFICATION)
          {
              final NotificationPacket notifPacket = (NotificationPacket)packet;
              final AbstractMessage prefetchedMessage = notifPacket.getMessage();
              
              boolean acceptedByConsumer = false;
                  
      		AbstractSession session = lookupRegisteredSession(notifPacket.getSessionId());
              if (session != null)
              {                   
                  RemoteMessageConsumer consumer = (RemoteMessageConsumer)session.lookupRegisteredConsumer(notifPacket.getConsumerId());
                  if (consumer != null)		
                      acceptedByConsumer = consumer.addToPrefetchQueue(prefetchedMessage,notifPacket.isDonePrefetching());
                  else
                  	log.debug("#"+id+" No such consumer : #"+notifPacket.getSessionId()+":"+notifPacket.getConsumerId()); // Consumer was concurrently closed or not yet registered
              }
              else
              	log.debug("#"+id+" No such session : #"+notifPacket.getSessionId()); // Session was concurrently closed
              
              // If the consumer was already gone, we need to rollback the prefetched message on the server side
              if (!acceptedByConsumer)
                  scheduleRollback(notifPacket.getSessionId(),
                  		         notifPacket.getConsumerId(),
                  		         prefetchedMessage);
              
              return true;
          }
          
          if (packet.getType() == PacketType.R_PING)
          	return true;
          
          // Standard response, route to target endpoint
          transportHub.routeResponse((AbstractResponsePacket)packet);
          
          return true;
      }
docs: /*
  (non-Javadoc)
  @see net.timewalker.ffmq4.remote.transport.PacketTransportListener#packetReceived(net.timewalker.ffmq4.remote.transport.packet.AbstractPacket)