code: @Override
  	public boolean packetReceived(AbstractPacket packet)
      {
          AbstractQueryPacket query = (AbstractQueryPacket)packet;
      	AbstractResponsePacket response = null;
      	
      	// Process packet
          try
          {
              try
              {
                  response = process(query);
              }
              catch (JMSException e)
              {
              	log.debug("#"+id+" process() failed with "+e.toString());
                  response = new ErrorResponse(e);
              }
          }
          catch (Exception e)
          {
              log.error("#"+id+" Cannot process command",e);
          }
          
          // Send response
          if (response != null && query.isResponseExpected())
          {        	
              // Map endpoint id on response
              response.setEndpointId(query.getEndpointId());
              
  	        try
  	        {   
  	            if (traceEnabled)
  	                log.trace("#"+id+" Sending "+response);
  	            transport.send(response);
  	        }
  	        catch (Exception e)
  	        {
  	            log.warn("#"+id+" Cannot send response to client : "+e.toString());
  	            transport.close();
  	        }
          }
          
          return localConnection != null; // Connection still valid ?
      }
docs: /*
  (non-Javadoc)
  @see net.timewalker.ffmq4.remote.transport.PacketTransportListener#packetReceived(net.timewalker.ffmq4.remote.transport.packet.AbstractPacket)