Esempio n. 1
0
  /* Parse and execute a NAMING message */
  protected boolean execNamingMessage(String opcode, Properties props) {
    if (opcode.equals("LOOKUP")) {
      if (props == null) {
        _log.debug("No parameters specified in NAMING LOOKUP message");
        return false;
      }

      String name = props.getProperty("NAME");
      if (name == null) {
        _log.debug("Name to resolve not specified in NAMING message");
        return false;
      }

      Destination dest = null;
      if (name.equals("ME")) {
        if (getRawSession() != null) {
          dest = getRawSession().getDestination();
        } else if (getStreamSession() != null) {
          dest = getStreamSession().getDestination();
        } else if (getDatagramSession() != null) {
          dest = getDatagramSession().getDestination();
        } else {
          _log.debug("Lookup for SESSION destination, but session is null");
          return false;
        }
      } else {
        try {
          dest = SAMUtils.getDest(name);
        } catch (DataFormatException e) {
        }
      }

      if (dest == null) {
        return writeString("NAMING REPLY RESULT=KEY_NOT_FOUND NAME=" + name + "\n");
      }

      return writeString(
          "NAMING REPLY RESULT=OK NAME=" + name + " VALUE=" + dest.toBase64() + "\n");
    } else {
      _log.debug("Unrecognized NAMING message opcode: \"" + opcode + "\"");
      return false;
    }
  }