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

📄 udpmessagedispatcher.java

📁 一个实用工具类
💻 JAVA
字号:
/* * Copyright (C) butor.com. All rights reserved. * * This software is published under the terms of the GNU Library General * Public License (GNU LGPL), a copy of which has been included with this * distribution in the LICENSE.txt file.  */package org.butor.net.udp;/** * ---------------------------------------------------------------- * 2000/09/13,fm: Creation */import java.util.Enumeration;import org.butor.log.Log;/** * Dispatches the command received from datagram to the appropritate * org.butor.web.listener. * * @author Filipe Mateus */public class UDPMessageDispatcher implements Runnable {	public static final String ALL_REGISTERED_LISTENERS = "*";	public static final String ALL_REGISTERED_LISTENERS_KEYS = "*,all";		protected String f_message;		public UDPMessageDispatcher(String message) {		super();		f_message = message;	}		public void run() {		String dest = null, name = null, message = null;		boolean sendToAll = false, sendToAllIncludingTrace = false;				// specific org.butor.web.listener message.		int delimPos = f_message.indexOf(" ");		if (delimPos == -1) {			/*			 * only one token found! ==> no org.butor.web.listener specified!			 * This is mean a message to every registered org.butor.web.listener except "Log trace".			 */			sendToAll = true;			message = f_message;			dest = "all_listeners_except_trace";					} else {			dest = f_message.substring(0, delimPos);			message = f_message.substring(delimPos + 1);						if (ALL_REGISTERED_LISTENERS_KEYS.indexOf(dest) >=0 ) {				sendToAll = true;								if (dest.equalsIgnoreCase(ALL_REGISTERED_LISTENERS)) {					sendToAllIncludingTrace = true;					dest = "all_listeners";									} else {					dest = "all_listeners_except_trace";				}			} else if (UDPService.isSingleListenerMode()) {				/*				 * It is single user mode and message not sent to all org.butor.web.listener (name != {*|all})				 * so we sent it to all listeners except trace.				 */				sendToAll = true;				dest = "all_listeners_except_trace";							} else {				/*				 * sent to a particular  org.butor.web.listener				 */				name = dest;			}		}		Log.logStr(			Log.LOG_LEVEL_LOW,			this,			Log.LOG_TYPE_INFO,			"run()",			"org.butor.web.listener=[" + dest + "], message=[" + message + "]");		if (sendToAll) {			// send the message to all registered org.butor.web.listener.			Enumeration en = UDPService.getListeners().keys();			while(en != null && en.hasMoreElements()) {				name = (String) en.nextElement();				sendMessage(name, message);			}					} else {			// send the message to the specified org.butor.web.listener only.			sendMessage(name, message);		}	}		/**	 * send the message to the specified org.butor.web.listener.	 */	protected void sendMessage(String memberName, String message) {		IUDPMessageListener listener = UDPService.getUdpMessageListener(memberName);		if (listener == null) {			Log.logStr(				this,				Log.LOG_TYPE_ERROR,				"run()",				"org.butor.web.listener not found [" + memberName + "]");			return;		}		listener.handleUdpMessage(message);	}}

⌨️ 快捷键说明

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