⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bscore.java

📁 一款即时通讯软件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            System.out.println("already connecting/ed");
            return false;
        }

        this.username = username;
        this.password = password;
        this.resource = resource;
        this.priority = priority;
        this.doRegister = newAccount;
        this.doAuthenticate = true;
        this.server = server;

        return connectImpl(server, port, useSSL);
    }


    /** Logs in using existing open connection and given details. */
    public boolean login(String username, String password, String resource,
                                int port, int priority, boolean newAccount) {

        System.out.println("BSCore login(" + username + ", " + resource + ",...)");

        this.username = username;
        this.password = password;
        this.resource = resource;
        this.priority = priority;
        this.doRegister = newAccount;
        this.doAuthenticate = true;

        // when trying to authenticate or register on open connection
        if (ConnectionEvent.STATE_CONNECTED != getConnectionState())
            return false;

        // if new account
        if (newAccount) {
            //register.register();
            register.addRegListener(this);
            PacketID id = new PacketID();
            servedIDs.add(id);
            register.sendInfos(username, password, id);
        }
        else
            auth.sendPassword(username, password, resource);

        return true;
    }


    /**
     * Connection listener function.
     * Sets and resets used beans when connection state is changed.
     */
    public void connectionChanged(ConnectionEvent ce) {
        System.out.println("BSCore connectionChanged(" + ce.getState() + ", " + ce.getReason() + ")");

        ConnectionEvent.EState connState = ce.getState();
        setConnectionState(connState);
    }


    /**
     * Disconnects
     */
    public void disconnect() {
        System.out.println("BSCore disconnect()");

        stopKeepAlive();

        if (connection != null)
            connection.disconnect();
    }


    // *** authentication actions ***

    /**
     * BSAuthListener function.
     * Calls disconnect.
     */
    public void authError(BSAuthEvent ae) {
        System.out.println("BSCore authError(" + ae + ")");
        fireLoginError("Not authenticated");
        //connection.disconnect();
    }


    /**
     * BSAuthListener function.
     * Calls further actions in log-in process.
     */
    public void authorized(BSAuthEvent ae) {
        System.out.println("BSCore authorized(" + ae + ")");
        fireLoginAuthorized();
        //agents.getAgents();
        JID myJID = new JID(username, server, resource);
        //presence.sendPresence(new BSPresenceInfo(myJID, true, null, null), null);
        presence.setMyJID(myJID);
        presence.setMyPresence(true, null, null, priority);
        roster.refreshRoster();
    }


    /** BSAuthListener function. Empty implementation. */
    public void authorizing(BSAuthEvent ae) {
        //nothing
    }


    // *** handling registration events ***

    /**
     * BSRegListener function. Disconnects.
     */
    //public void regError(BSRegEvent re) {
    public void regError(InfoQuery iq, String id) {
        if (!servedIDs.contains(id)) return;
        System.out.println("BSCore regError(...)");
        servedIDs.remove(id);
        register.removeRegListener(this);
        fireLoginError(iq);
        //connection.disconnect();
    }

    /**
     * BSRegListener function. Empty for now.
     */
    //public void regInfosNeeded(BSRegEvent re) {
    public void regInfosNeeded(InfoQuery iq, String id) {
        if (!servedIDs.contains(id)) return;
        System.out.println("BSCore regInfosNeeded(...)");
        /*BSRegDialog dlg = new BSRegDialog(this, true, re, register);
        dlg.show();*/
        servedIDs.remove(id);
    }

    /**
     * BSRegListener function. Continues in logging in.
     */
    //public void registered(BSRegEvent re) {
    public void registered(InfoQuery iq, String id) {
        if (!servedIDs.contains(id)) return;
        System.out.println("BSCore registered(...)");
        servedIDs.remove(id);
        register.removeRegListener(this);
        fireLoginRegistered();
        if (doAuthenticate)
            auth.sendPassword(username, password, resource);
    }

    /**
     * Adds <code>RosterListener</code>
     */
    public void addRosterListener(RosterListener listener) {
        if (roster != null)
            roster.addRosterListener(listener);
    }

    /**
     * Adds <code>BSPresenceListener</code>
     */
    public void addPresenceListener(BSPresenceListener listener) {
        if (presence != null)
            presence.addPresenceListener(listener);
    }

    // *** log listeners ***

    /**
     * Adds <code>BSLogListener</code> to listeners for logging.
     *
     * @see #removeLogListener
     * @see #fireLogStatus
     */
    public void addLogListener(BSLogListener listener) {
        //assert listener != null : listener;
        if (listener == null) return;
        if (!logListeners.contains(listener)) {
            logListeners.addElement(listener);
        }
        if (logger != null) logger.addLogListener(listener);
    }

    /**
     * Removes <code>BSLogListener</code> from listeners for logging.
     *
     * @see #addLogListener
     * @see #fireLogStatus
     */
    public void removeLogListener(BSLogListener listener) {
        //assert listener != null : listener;
        if (listener == null) return;
        logListeners.removeElement(listener);
        if (logger != null) logger.removeLogListener(listener);
    }

    /**
     * Notifies <code>BSLogListener</code>s about status change.
     *
     * @see #addLogListener
     * @see #removeLogListener
     */
    private static void fireLogStatus(String source, String message) {
        for (Enumeration e = logListeners.elements(); e.hasMoreElements(); ) {
            BSLogListener listener = (BSLogListener) e.nextElement();
            listener.logStatus(source, message);
        }
    }

    /**
     * Notifies <code>BSLogListener</code>s about status change.
     *
     * @see #addLogListener
     * @see #removeLogListener
     */
    private static void fireLogMessage(String from, String subject, String body) {
        for (Enumeration e = logListeners.elements(); e.hasMoreElements(); ) {
            BSLogListener listener = (BSLogListener) e.nextElement();
            listener.logMessage(from, subject, body);
        }
    }

    // *** login listeners *** //

    /**
     * Adds <code>BSLoginListener</code> to listeners for logging in.
     *
     * @see #removeLoginListener
     * @see #fireLogin...
     */
    public void addLoginListener(BSLoginListener listener) {
        //assert listener != null : listener;
        if (listener == null) return;
        if (!loginListeners.contains(listener)) {
            loginListeners.addElement(listener);
        }
    }

    /**
     * Removes <code>BSLoginListener</code> from listeners for logging in.
     *
     * @see #addLoginListener
     * @see #fireLogin...
     */
    public void removeLoginListener(BSLoginListener listener) {
        //assert listener != null : listener;
        if (listener == null) return;
        loginListeners.removeElement(listener);
    }

    /**
     * Notifies <code>BSLoginListener</code>s about registered event.
     *
     * @see #addLoginListener
     * @see #removeLoginListener
     */
    private static void fireLoginRegistered() {
        for (Enumeration e = loginListeners.elements(); e.hasMoreElements(); ) {
            BSLoginListener listener = (BSLoginListener) e.nextElement();
            listener.loginRegistered();
        }
    }

    /**
     * Notifies <code>BSLoginListener</code>s about authenticated event.
     *
     * @see #addLoginListener
     * @see #removeLoginListener
     */
    private static void fireLoginAuthorized() {
        for (Enumeration e = loginListeners.elements(); e.hasMoreElements(); ) {
            BSLoginListener listener = (BSLoginListener) e.nextElement();
            listener.loginAuthorized();
        }
    }

    /**
     * Notifies <code>BSLoginListener</code>s about login error event.
     *
     * @see #addLoginListener
     * @see #removeLoginListener
     */
    private static void fireLoginError(InfoQuery iq) {
        for (Enumeration e = loginListeners.elements(); e.hasMoreElements(); ) {
            BSLoginListener listener = (BSLoginListener) e.nextElement();
            listener.loginError(iq);
        }
    }

    /**
     * Notifies <code>BSLoginListener</code>s about login error event.
     *
     * @see #addLoginListener
     * @see #removeLoginListener
     */
    private static void fireLoginError(String error) {
        for (Enumeration e = loginListeners.elements(); e.hasMoreElements(); ) {
            BSLoginListener listener = (BSLoginListener) e.nextElement();
            listener.loginError(error);
        }
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -