Exemplo n.º 1
0
  /** Starts this manager for given <tt>hostName</tt>. */
  public void start() {
    expireThread.start();

    ConfigurationService config = FocusBundleActivator.getConfigService();
    String hostName = config.getString(HOSTNAME_PNAME);
    String xmppDomain = config.getString(XMPP_DOMAIN_PNAME);

    focusUserDomain = config.getString(FOCUS_USER_DOMAIN_PNAME);
    focusUserName = config.getString(FOCUS_USER_NAME_PNAME);

    String focusUserPassword = config.getString(FOCUS_USER_PASSWORD_PNAME);

    protocolProviderHandler.start(hostName, focusUserDomain, focusUserPassword, focusUserName);

    jitsiMeetServices =
        new JitsiMeetServices(
            protocolProviderHandler.getOperationSet(OperationSetSubscription.class));

    String statsPubSubNode = config.getString(SHARED_STATS_PUBSUB_NODE_PNAME);

    componentsDiscovery = new ComponentsDiscovery(jitsiMeetServices);

    componentsDiscovery.start(xmppDomain, statsPubSubNode, protocolProviderHandler);

    meetExtensionsHandler = new MeetExtensionsHandler(this);

    ProviderManager.getInstance()
        .addExtensionProvider(
            LogPacketExtension.LOG_ELEM_NAME,
            LogPacketExtension.NAMESPACE,
            new LogExtensionProvider());

    FocusBundleActivator.bundleContext.registerService(
        JitsiMeetServices.class, jitsiMeetServices, null);

    protocolProviderHandler.addRegistrationListener(this);
    protocolProviderHandler.register();
  }
Exemplo n.º 2
0
  /**
   * Retrieve DiscoverInfo for a specific node.
   *
   * @param caps the <tt>Caps</tt> i.e. the node, the hash and the ver
   * @return The corresponding DiscoverInfo or null if none is known.
   */
  public static DiscoverInfo getDiscoverInfoByCaps(Caps caps) {
    synchronized (caps2discoverInfo) {
      DiscoverInfo discoverInfo = caps2discoverInfo.get(caps);

      /*
       * If we don't have the discoverInfo in the runtime cache yet, we
       * may have it remembered in a previous application instance.
       */
      if (discoverInfo == null) {
        ConfigurationService configurationService = getConfigService();
        String capsPropertyName = getCapsPropertyName(caps);
        String xml = configurationService.getString(capsPropertyName);

        if ((xml != null) && (xml.length() != 0)) {
          IQProvider discoverInfoProvider =
              (IQProvider)
                  ProviderManager.getInstance()
                      .getIQProvider("query", "http://jabber.org/protocol/disco#info");

          if (discoverInfoProvider != null) {
            XmlPullParser parser = new MXParser();

            try {
              parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
              parser.setInput(new StringReader(xml));
              // Start the parser.
              parser.next();
            } catch (XmlPullParserException xppex) {
              parser = null;
            } catch (IOException ioex) {
              parser = null;
            }

            if (parser != null) {
              try {
                discoverInfo = (DiscoverInfo) discoverInfoProvider.parseIQ(parser);
              } catch (Exception ex) {
              }

              if (discoverInfo != null) {
                if (caps.isValid(discoverInfo)) caps2discoverInfo.put(caps, discoverInfo);
                else {
                  logger.error(
                      "Invalid DiscoverInfo for " + caps.getNodeVer() + ": " + discoverInfo);
                  /*
                   * The discoverInfo doesn't seem valid
                   * according to the caps which means that we
                   * must have stored invalid information.
                   * Delete the invalid information in order
                   * to not try to validate it again.
                   */
                  configurationService.removeProperty(capsPropertyName);
                }
              }
            }
          }
        }
      }
      return discoverInfo;
    }
  }