@Override
  public void run()
  {
    try
    {
      ObjectInputStream objIn = new ObjectInputStream(traceSocket.getInputStream());
      while (true)
      {
    	  Object data = null;
    	  try {
    	        data = objIn.readObject();    		  
    	  } catch (Exception e) {
    		  if (!consumerRequestedDisconnect())//If consumer asked for a disconnect, no need to throw one.
    		  throw new DisconnectionException(DefaultFactory.getFactory().getMessages().getDisconnectionMessage(getHostPort()));
    		  //Consider starting a timer to attempt to reconnected every minute or so?
    	  }

        if (data instanceof String)
        {
          String traceLine = (String) data;
          if (!"NOOP".equals(traceLine))
          {
        	  /**
        	   * Erik Ostermueller
        	   * May 9, 2012
        	   * TODO:  Can't figure out how to enable this flag, so I've
        	   * temporarily commented out this check.
        	   */
            //if (outputConfig.isNetOutputEnabled())
            {
                if (outputConfig.isGzipEnabled()) {
              	  byte[] tmp = Base64.decode(traceLine);
              	  traceLine = new String(tmp);
                }
            	writeTraceEvent(traceLine);
            }
          }
        }
      }
    }
    catch (Exception e)
    {
    	e.printStackTrace();
      disconnect();
    }
  }