code: @Override
    public void run()
    {
      try {
        while (! isClosed() && _is.read() > 0 && _in.readMessage(_is)) {
          ServiceRef.flushOutbox();
        }
      } catch (EOFException e) {
        log.finer(this + " end of file");
        
        if (log.isLoggable(Level.ALL)) {
          log.log(Level.ALL, e.toString(), e);
        }
      } catch (SocketException e) {
        e.printStackTrace();
        log.finer(this + " socket closed:" + e);
        
        if (log.isLoggable(Level.ALL)) {
          log.log(Level.ALL, e.toString(), e);
        }
      } catch (IOException e) {
        e.printStackTrace();
        throw new RuntimeException(e);
      } catch (Throwable e) {
        e.printStackTrace();
        throw e;
      } finally {
        close();
      }
    }
docs: Receive messages from the client