yahoosessionlistener.java
来自「基于Jabber协议的即时消息服务器」· Java 代码 · 共 303 行
JAVA
303 行
/** * $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. */package org.jivesoftware.wildfire.gateway.protocols.yahoo;import org.jivesoftware.util.Log;import org.xmpp.packet.Message;import org.xmpp.packet.Presence;import ymsg.network.YahooUser;import ymsg.network.StatusConstants;import ymsg.network.event.SessionChatEvent;import ymsg.network.event.SessionConferenceEvent;import ymsg.network.event.SessionErrorEvent;import ymsg.network.event.SessionEvent;import ymsg.network.event.SessionExceptionEvent;import ymsg.network.event.SessionFileTransferEvent;import ymsg.network.event.SessionFriendEvent;import ymsg.network.event.SessionListener;import ymsg.network.event.SessionNewMailEvent;import ymsg.network.event.SessionNotifyEvent;import ymsg.support.MessageDecoder;/** * Handles incoming packets from Yahoo. * * This takes care of events we don't do anything with yet by logging them. * * @author Daniel Henninger * Heavily inspired by Noah Campbell's work. */public class YahooSessionListener implements SessionListener { /** * Handles converting messages between formats. */ private MessageDecoder messageDecoder = new MessageDecoder(); /** * Creates a Yahoo session listener affiliated with a session. * * @param session The YahooSession instance we are associatd with. */ public YahooSessionListener(YahooSession session) { this.yahooSession = session; } /** * The transport session we are affiliated with. */ YahooSession yahooSession; /** * @see ymsg.network.event.SessionListener#messageReceived(ymsg.network.event.SessionEvent) */ public void messageReceived(SessionEvent event) { Message m = new Message(); m.setType(Message.Type.chat); m.setTo(yahooSession.getJIDWithHighestPriority()); m.setFrom(yahooSession.getTransport().convertIDToJID(event.getFrom())); m.setBody(messageDecoder.decodeToText(event.getMessage())); yahooSession.getTransport().sendPacket(m); } /** * @see ymsg.network.event.SessionListener#offlineMessageReceived(ymsg.network.event.SessionEvent) */ public void offlineMessageReceived(SessionEvent event) { Message m = new Message(); m.setType(Message.Type.chat); m.setTo(yahooSession.getJIDWithHighestPriority()); m.setFrom(yahooSession.getTransport().convertIDToJID(event.getFrom())); m.setBody(messageDecoder.decodeToText(event.getMessage())); yahooSession.getTransport().sendPacket(m); } /** * @see ymsg.network.event.SessionListener#newMailReceived(ymsg.network.event.SessionNewMailEvent) */ public void newMailReceived(SessionNewMailEvent event) { if (event.getMailCount() > 0) { Message m = new Message(); m.setType(Message.Type.headline); m.setTo(yahooSession.getJIDWithHighestPriority()); m.setFrom(yahooSession.getTransport().getJID()); m.setBody("You have "+event.getMailCount()+" message(s) waiting in your Yahoo! mail."); yahooSession.getTransport().sendPacket(m); } } /** * @see ymsg.network.event.SessionListener#friendsUpdateReceived(ymsg.network.event.SessionFriendEvent) */ public void friendsUpdateReceived(SessionFriendEvent event) { for (YahooUser user : event.getFriends()) { Presence p = new Presence(); p.setTo(yahooSession.getJID()); p.setFrom(yahooSession.getTransport().convertIDToJID(event.getFrom())); String custommsg = user.getCustomStatusMessage(); if (custommsg != null) { p.setStatus(custommsg); } ((YahooTransport)yahooSession.getTransport()).setUpPresencePacket(p, user.getStatus()); yahooSession.getTransport().sendPacket(p); } } /** * @see ymsg.network.event.SessionListener#friendAddedReceived(ymsg.network.event.SessionFriendEvent) */ public void friendAddedReceived(SessionFriendEvent event) { Presence p = new Presence(Presence.Type.subscribe); p.setTo(yahooSession.getJID()); p.setFrom(yahooSession.getTransport().convertIDToJID(event.getFrom())); yahooSession.getTransport().sendPacket(p); } /** * @see ymsg.network.event.SessionListener#friendRemovedReceived(ymsg.network.event.SessionFriendEvent) */ public void friendRemovedReceived(SessionFriendEvent event) { Presence p = new Presence(Presence.Type.unsubscribe); p.setTo(yahooSession.getJID()); p.setFrom(yahooSession.getTransport().convertIDToJID(event.getFrom())); yahooSession.getTransport().sendPacket(p); } /** * @see ymsg.network.event.SessionListener#connectionClosed(ymsg.network.event.SessionEvent) */ public void connectionClosed(SessionEvent event) { Log.debug(event.toString()); if (yahooSession.isLoggedIn()) { yahooSession.logOut(); } } /** * @see ymsg.network.event.SessionListener#fileTransferReceived(ymsg.network.event.SessionFileTransferEvent) */ public void fileTransferReceived(SessionFileTransferEvent event) { Log.debug(event.toString()); } /** * @see ymsg.network.event.SessionListener#listReceived(ymsg.network.event.SessionEvent) */ public void listReceived(SessionEvent event) { // We just got the entire contact list. Lets sync up. yahooSession.syncUsers(); } /** * @see ymsg.network.event.SessionListener#buzzReceived(ymsg.network.event.SessionEvent) */ public void buzzReceived(SessionEvent event) { Message m = new Message(); m.setType(Message.Type.chat); m.setTo(yahooSession.getJIDWithHighestPriority()); m.setFrom(yahooSession.getTransport().convertIDToJID(event.getFrom())); m.setBody(messageDecoder.decodeToText(event.getMessage())); yahooSession.getTransport().sendPacket(m); } /** * @see ymsg.network.event.SessionListener#errorPacketReceived(ymsg.network.event.SessionErrorEvent) */ public void errorPacketReceived(SessionErrorEvent event) { Log.error("Error from yahoo: "+event.getMessage()+", Code:"+event.getCode()); Message m = new Message(); m.setType(Message.Type.error); m.setTo(yahooSession.getJIDWithHighestPriority()); m.setFrom(yahooSession.getTransport().getJID()); m.setBody("Error from yahoo: "+event.getMessage()); yahooSession.getTransport().sendPacket(m); } /** * @see ymsg.network.event.SessionListener#inputExceptionThrown(ymsg.network.event.SessionExceptionEvent) */ public void inputExceptionThrown(SessionExceptionEvent event) { Log.error("Input error from yahoo: "+event.getMessage(), event.getException()); Message m = new Message(); m.setType(Message.Type.error); m.setTo(yahooSession.getJIDWithHighestPriority()); m.setFrom(yahooSession.getTransport().getJID()); m.setBody("Input error from yahoo: "+event.getMessage()); yahooSession.getTransport().sendPacket(m); } /** * @see ymsg.network.event.SessionListener#notifyReceived(ymsg.network.event.SessionNotifyEvent) */ public void notifyReceived(SessionNotifyEvent event) { Log.debug(event.toString()); if (event.getType().equals(StatusConstants.NOTIFY_TYPING)) { // Ooh, a typing notification. We'll use this in the future. } } /** * @see ymsg.network.event.SessionListener#contactRequestReceived(ymsg.network.event.SessionEvent) */ public void contactRequestReceived(SessionEvent event) { Presence p = new Presence(Presence.Type.subscribe); p.setTo(yahooSession.getJID()); p.setFrom(yahooSession.getTransport().convertIDToJID(event.getFrom())); yahooSession.getTransport().sendPacket(p); } /** * @see ymsg.network.event.SessionListener#contactRejectionReceived(ymsg.network.event.SessionEvent) */ public void contactRejectionReceived(SessionEvent event) { // TODO: Is this correct? unsubscribed for a rejection? Log.debug(event.toString()); Presence p = new Presence(Presence.Type.unsubscribed); p.setTo(yahooSession.getJID()); p.setFrom(yahooSession.getTransport().convertIDToJID(event.getFrom())); yahooSession.getTransport().sendPacket(p); } /** * @see ymsg.network.event.SessionListener#conferenceInviteReceived(ymsg.network.event.SessionConferenceEvent) */ public void conferenceInviteReceived(SessionConferenceEvent event) { Log.debug(event.toString()); } /** * @see ymsg.network.event.SessionListener#conferenceInviteDeclinedReceived(ymsg.network.event.SessionConferenceEvent) */ public void conferenceInviteDeclinedReceived(SessionConferenceEvent event) { Log.debug(event.toString()); } /** * @see ymsg.network.event.SessionListener#conferenceLogonReceived(ymsg.network.event.SessionConferenceEvent) */ public void conferenceLogonReceived(SessionConferenceEvent event) { Log.debug(event.toString()); } /** * @see ymsg.network.event.SessionListener#conferenceLogoffReceived(ymsg.network.event.SessionConferenceEvent) */ public void conferenceLogoffReceived(SessionConferenceEvent event) { Log.debug(event.toString()); } /** * @see ymsg.network.event.SessionListener#conferenceMessageReceived(ymsg.network.event.SessionConferenceEvent) */ public void conferenceMessageReceived(SessionConferenceEvent event) { Log.debug(event.toString()); } /** * @see ymsg.network.event.SessionListener#chatLogonReceived(ymsg.network.event.SessionChatEvent) */ public void chatLogonReceived(SessionChatEvent event) { Log.debug(event.toString()); } /** * @see ymsg.network.event.SessionListener#chatLogoffReceived(ymsg.network.event.SessionChatEvent) */ public void chatLogoffReceived(SessionChatEvent event) { Log.debug(event.toString()); } /** * @see ymsg.network.event.SessionListener#chatMessageReceived(ymsg.network.event.SessionChatEvent) */ public void chatMessageReceived(SessionChatEvent event) { Log.debug(event.toString()); } /** * @see ymsg.network.event.SessionListener#chatUserUpdateReceived(ymsg.network.event.SessionChatEvent) */ public void chatUserUpdateReceived(SessionChatEvent event) { Log.debug(event.toString()); } /** * @see ymsg.network.event.SessionListener#chatConnectionClosed(ymsg.network.event.SessionEvent) */ public void chatConnectionClosed(SessionEvent event) { Log.debug(event.toString()); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?