Package org.jivesoftware.smack

Examples of org.jivesoftware.smack.Connection


     *
     * @blocking This method is potentially long-running
     */
    public String getSkypeURL(JID rqJID) {

        Connection connection = saros.getSarosNet().getConnection();

        if (connection == null)
            return null;

        String skypeName;
View Full Code Here


     * available.
     *
     * TODO SS only send to those, that we know use Saros.
     */
    public void publishSkypeIQ(String newSkypeName) {
        Connection connection = saros.getSarosNet().getConnection();

        if (connection == null)
            return;

        Roster roster = connection.getRoster();
        if (roster == null)
            return;

        for (RosterEntry rosterEntry : roster.getEntries()) {
            for (Presence presence : Utils.asIterable(roster
                .getPresences(rosterEntry.getUser()))) {
                if (presence.isAvailable()) {
                    IQ result = skypeProvider.createIQ(newSkypeName);
                    result.setType(IQ.Type.SET);
                    result.setTo(presence.getFrom());
                    connection.sendPacket(result);
                }
            }
        }
    }
View Full Code Here

   *
   * @return
   */
  public boolean testConnection() {
    boolean test = false;
    Connection conn = new XMPPConnection(server);
    try {
      conn.connect();
      conn.login(uid, pwd);
      conn.disconnect();
      test = true;
    } catch (XMPPException e) {
      logger.l2("XMPP connection test failed", e);
    }
    return test;
View Full Code Here

        this.sdm = ServiceDiscoveryManager.getInstanceFor(connection);
        init();
    }

    private void init() {
        Connection connection = weakRefConnection.get();
        instances.put(connection, this);

        connection.addConnectionListener(new ConnectionListener() {
            public void connectionClosed() {
                // Unregister this instance since the connection has been closed
                presenceSend = false;
                instances.remove(weakRefConnection.get());
            }

            public void connectionClosedOnError(Exception e) {
                presenceSend = false;
            }

            public void reconnectionFailed(Exception e) {
                // ignore
            }

            public void reconnectingIn(int seconds) {
                // ignore
            }

            public void reconnectionSuccessful() {
                // ignore
            }
        });

        // This calculates the local entity caps version
        updateLocalEntityCaps();

        if (SmackConfiguration.autoEnableEntityCaps())
            enableEntityCaps();

        PacketFilter packetFilter = new AndFilter(new PacketTypeFilter(Presence.class), new PacketExtensionFilter(
                ELEMENT, NAMESPACE));
        connection.addPacketListener(new PacketListener() {
            // Listen for remote presence stanzas with the caps extension
            // If we receive such a stanza, record the JID and nodeVer
            @Override
            public void processPacket(Packet packet) {
                if (!entityCapsEnabled())
                    return;

                CapsExtension ext = (CapsExtension) packet.getExtension(EntityCapsManager.ELEMENT,
                        EntityCapsManager.NAMESPACE);

                String hash = ext.getHash().toLowerCase();
                if (!SUPPORTED_HASHES.containsKey(hash))
                    return;

                String from = packet.getFrom();
                String node = ext.getNode();
                String ver = ext.getVer();

                jidCaps.put(from, new NodeVerHash(node, ver, hash));
            }

        }, packetFilter);

        packetFilter = new AndFilter(new PacketTypeFilter(Presence.class), new NotFilter(new PacketExtensionFilter(
                ELEMENT, NAMESPACE)));
        connection.addPacketListener(new PacketListener() {
            @Override
            public void processPacket(Packet packet) {
                // always remove the JID from the map, even if entityCaps are
                // disabled
                String from = packet.getFrom();
                jidCaps.remove(from);
            }
        }, packetFilter);

        packetFilter = new PacketTypeFilter(Presence.class);
        connection.addPacketSendingListener(new PacketListener() {
            @Override
            public void processPacket(Packet packet) {
                presenceSend = true;
            }
        }, packetFilter);

        // Intercept presence packages and add caps data when intended.
        // XEP-0115 specifies that a client SHOULD include entity capabilities
        // with every presence notification it sends.
        PacketFilter capsPacketFilter = new PacketTypeFilter(Presence.class);
        PacketInterceptor packetInterceptor = new PacketInterceptor() {
            public void interceptPacket(Packet packet) {
                if (!entityCapsEnabled)
                    return;

                CapsExtension caps = new CapsExtension(ENTITY_NODE, getCapsVersion(), "sha-1");
                packet.addExtension(caps);
            }
        };
        connection.addPacketInterceptor(packetInterceptor, capsPacketFilter);
        // It's important to do this as last action. Since it changes the
        // behavior of the SDM in some ways
        sdm.setEntityCapsManager(this);
    }
View Full Code Here

     *            the local users identity name
     * @param extendedInfo
     *            the local users extended info
     */
    public void updateLocalEntityCaps() {
        Connection connection = weakRefConnection.get();

        DiscoverInfo discoverInfo = new DiscoverInfo();
        discoverInfo.setType(IQ.Type.RESULT);
        discoverInfo.setNode(getLocalNodeVer());
        if (connection != null)
            discoverInfo.setFrom(connection.getUser());
        sdm.addDiscoverInfoTo(discoverInfo);

        currentCapsVersion = generateVerificationString(discoverInfo, "sha-1");
        addDiscoverInfoByNode(ENTITY_NODE + '#' + currentCapsVersion, discoverInfo);
        if (lastLocalCapsVersions.size() > 10) {
            String oldCapsVersion = lastLocalCapsVersions.poll();
            sdm.removeNodeInformationProvider(ENTITY_NODE + '#' + oldCapsVersion);
        }
        lastLocalCapsVersions.add(currentCapsVersion);

        caps.put(currentCapsVersion, discoverInfo);
        if (connection != null)
            jidCaps.put(connection.getUser(), new NodeVerHash(ENTITY_NODE, currentCapsVersion, "sha-1"));

        sdm.setNodeInformationProvider(ENTITY_NODE + '#' + currentCapsVersion, new NodeInformationProvider() {
            List<String> features = sdm.getFeaturesList();
            List<Identity> identities = new LinkedList<Identity>(ServiceDiscoveryManager.getIdentities());
            List<PacketExtension> packetExtensions = sdm.getExtendedInfoAsList();

            @Override
            public List<Item> getNodeItems() {
                return null;
            }

            @Override
            public List<String> getNodeFeatures() {
                return features;
            }

            @Override
            public List<Identity> getNodeIdentities() {
                return identities;
            }

            @Override
            public List<PacketExtension> getNodePacketExtensions() {
                return packetExtensions;
            }
        });

        // Send an empty presence, and let the packet intercepter
        // add a <c/> node to it.
        // See http://xmpp.org/extensions/xep-0115.html#advertise
        // We only send a presence packet if there was already one send
        // to respect ConnectionConfiguration.isSendPresence()
        if (connection != null && connection.isAuthenticated() && presenceSend) {
            Presence presence = new Presence(Presence.Type.available);
            connection.sendPacket(presence);
        }
    }
View Full Code Here

TOP

Related Classes of org.jivesoftware.smack.Connection

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.