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

📄 messagerouter.java

📁 Java Communicating Agents是一个用于开发网络反应式信息agent的框架
💻 JAVA
字号:
/* * $Source: /home/data/cvsroot/src/jacomma/platform/engine/MessageRouter.java,v $ * $Revision: 1.4 $ * $Date: 2000/10/28 20:09:08 $ * * This file is part of the jacomma framework * Copyright (c) 2000 	Dimitrios Vyzovitis *			mailto:dviz@egnatia.ee.auth.gr *			 * *			 *			 *			 * *	This library is free software; you can redistribute it and/or modify *	it under the terms of the GNU Library General Public License as published by *	the Free Software Foundation; either version 2 of the License, or *	(at your option) any later version. * *	This library is distributed in the hope that it will be useful, *	but WITHOUT ANY WARRANTY; without even the implied warranty of *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *	GNU Library General Public License for more details. * *	You should have received a copy of the GNU Library General Public License *	along with this library; if not, write to the Free Software *	Foundation, Inc., 59 Temple Place, Suite 330,  *	Boston, MA  02111-1307  USA */package jacomma.platform.engine;import java.net.InetAddress;import java.util.Map;import java.util.HashMap;import java.util.Set;import java.util.HashSet;import jacomma.icm.type.Message;import jacomma.icm.type.Handle;import jacomma.util.RdWrLock;import jacomma.util.Environment;/** * TBA **/class MessageRouter implements MessageBuffer {		Map agents_ = new HashMap();	Map inp_ = new HashMap();	Map outp_ = new HashMap();	RdWrLock lock_ = new RdWrLock();	InetAddress localhost_;	static final MessageRouter instance = new MessageRouter();		MessageRouter() {		try {			String cs = (String)Environment.getProperty( "icm.host" );			localhost_ = ( cs == null ) ?				InetAddress.getLocalHost() : InetAddress.getByName( cs );		} catch ( java.net.UnknownHostException exc ) {			throw new jacomma.util.CheckedException( exc );		}	}	public void put( Message msg ) throws java.io.IOException {		//route( msg ).put( msg );		MessageBuffer target = route( msg );		target.put( msg );	}		public void registerAgent( Handle h, MessageBuffer inp, MessageBuffer outp ) {		lock_.wrlock();		try {			agents_.put( h.id(), localhost_ );			inp_.put( h.id(), inp );			outp_.put( h.id(), outp );		} finally {			lock_.unlock();		}	}		public void unregisterAgent( Handle h ) {		lock_.wrlock();		try {			agents_.remove( h.id() );			inp_.remove( h.id() );			outp_.remove( h.id() );		} finally {			lock_.unlock();		}	}	public MessageBuffer route( Message msg ) {		Handle to = msg.getRecipient();		lock_.rdlock();		try {			if ( to.locations().contains( agents_.get( to.id() ) ) )				return (MessageBuffer)inp_.get( to.id() );			else				return (MessageBuffer)outp_.get( msg.getSender().id() );		} finally {			lock_.unlock();		}	}		public void dump() {		System.out.println( toString() );		System.out.println( "localhost: " + localhost_ );		System.out.println( "agents: " + agents_ );		System.out.println( "inp: " + inp_ );		System.out.println( "outp: " + outp_ );	}}

⌨️ 快捷键说明

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