@Override
 public void run() {
   try {
     initStreams();
     String line = "";
     Command command = null;
     boolean _break = false;
     while ((line = in.readLine()) != null && !_break) {
       logger.info("Message received: " + line);
       command = GsonUtils.toCommand(line);
       _break = processCommad(command);
     }
     in.close();
     out.close();
     socket.close();
     mediator.removeSession(this);
     logger.info("This session was closed, streams and socket already closed");
     join();
   } catch (IOException e) {
     logger.error(e.getLocalizedMessage());
   } catch (InterruptedException e) {
     logger.error(e.getLocalizedMessage());
   }
 }
 @Override
 public void sendCommand(Command command) {
   mediator.sendMessage(command, this);
 }