serviceconnection.java

来自「基于Jabber协议的即时消息服务器」· Java 代码 · 共 78 行

JAVA
78
字号
/** * $Revision$ * $Date$ * * Copyright (C) 2006 Jive Software. All rights reserved. * * This software is published under the terms of the GNU Public License (GPL), * a copy of which is included in this distribution. * * Heavily inspired by joscardemo of the Joust Project: http://joust.kano.net/ */package org.jivesoftware.wildfire.gateway.protocols.oscar;import net.kano.joscar.flap.ClientFlapConn;import net.kano.joscar.flap.FlapPacketEvent;import net.kano.joscar.ByteBlock;import net.kano.joscar.flapcmd.SnacCommand;import net.kano.joscar.snaccmd.conn.RateInfoCmd;import net.kano.joscar.snac.SnacPacketEvent;import net.kano.joscar.snac.SnacResponseEvent;import net.kano.joscar.net.ClientConnEvent;import net.kano.joscar.net.ConnDescriptor;import org.jivesoftware.util.Log;/** * Represents a connection to a particular OSCAR service. * * @author Daniel Henninger * Heavily inspired by joscardemo from the joscar project. */public class ServiceConnection extends BasicFlapConnection {    protected int serviceFamily;    public ServiceConnection(ConnDescriptor cd, OSCARSession mainSession, ByteBlock cookie, int serviceFamily) {        super(cd, mainSession, cookie);        this.serviceFamily = serviceFamily;    }    protected void clientReady() {        oscarSession.serviceReady(this);        super.clientReady();    }    protected void handleStateChange(ClientConnEvent e) {        Log.debug("OSCAR service state change from "+e.getOldState()+" to "+e.getNewState());        if (e.getNewState() == ClientFlapConn.STATE_FAILED) {            oscarSession.serviceFailed(this);        } else if (e.getNewState() == ClientFlapConn.STATE_CONNECTED) {            oscarSession.serviceConnected(this);        } else if (e.getNewState() == ClientFlapConn.STATE_NOT_CONNECTED) {            oscarSession.serviceDied(this);        }    }    protected void handleFlapPacket(FlapPacketEvent e) {        super.handleFlapPacket(e);    }    protected void handleSnacPacket(SnacPacketEvent e) {        super.handleSnacPacket(e);    }    protected void handleSnacResponse(SnacResponseEvent e) {        super.handleSnacResponse(e);        SnacCommand cmd = e.getSnacCommand();        if (cmd instanceof RateInfoCmd) {            // this is all we need.            clientReady();        }    }}

⌨️ 快捷键说明

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