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

📄 messenger.py

📁 Java Communicating Agents是一个用于开发网络反应式信息agent的框架
💻 PY
字号:
#!/usr/bin/env jpythonimport sysimport javafrom java.awt import BorderLayout, GridLayoutimport jacommafrom jacomma.icm.type import Handle, Symbolfrom jacomma.platform.core import Agent, AgentManager, MessagePattern, AgentObserverAdapterimport javaxfrom javax.swing import *class messenger( java.awt.event.ActionListener ):	def __init__( self, mf, agent ):		self.mf_ = mf		self.agent_ = agent	def actionPerformed( self, evt ):		l = java.util.ArrayList()		l.add( Symbol( "broadcast" ) )		l.add( self.mf_.getText() )		self.agent_.send( self.agent_.getProperty( "target" ), l )class window_listener( java.awt.event.WindowAdapter ):	def __init__( self, agent ):		self.agent_ = agent	def windowClosing( self, evt ):		self.agent_.send( self.agent_.getProperty( "target" ), Symbol( "unregister" ) )		self.agent_.destroy()		AgentManager.instance.stopEngine()		java.lang.System.exit( 0 )class msg_handler( Agent.MessageHandler ):	def onMessage( self, agent, msg ):		print "Incoming Message:", msg		cnt = msg.getContent()		buf = java.lang.StringBuffer()		buf.append( cnt.get( 1 ) ).append( ": " ).append( cnt.get( 2 ) )		buf.append( "\n" )		SwingUtilities.invokeLater( gui_update( agent.getProperty( "messages" ),\												buf.toString() ) )class msg_test( java.lang.Object ) :	def equals( self, msg ) :		l = msg.getContent()		return java.util.List.isInstance( l ) \			   and l.size() == 3 \			   and l.get( 0 ).equals( Symbol( "message" ) ) \			   and Handle.isInstance( l.get( 1 ) )class gui_update( java.lang.Runnable ):	def __init__( self, ml, msg ):		self.ml_ = ml		self.msg_ = msg	def run( self ):		self.ml_.append( self.msg_ )class ag_observer( AgentObserverAdapter ):	def __init__( self, target ):		self.target_ = target	def onRegisteredAgent( self, agent, host ):		agent.setProperty( "target", self.target_ )		agent.registerHandler( MessagePattern.createPattern( java.util.List, msg_test()), \							   msg_handler() )		# register the agent		f = make_gui( agent )		f.pack()		f.show()		agent.send( self.target_, Symbol( "register" ) )		def make_gui( agent ) :	f = JFrame( agent.getHandle().toString() )	f.addWindowListener( window_listener( agent ) )	ml = JTextArea( 20, 20 )	ml.setEditable( 0 )	ml.setBorder( BorderFactory.createEtchedBorder() )	agent.setProperty( "messages",ml )	mf = JTextField( 15 )	mb = JButton( "send!" )	mb.addActionListener( messenger( mf, agent ) )	pf = JPanel( GridLayout( 1, 2) )	pf.setBorder( BorderFactory.createEtchedBorder() )	pf.add( mf )	pf.add( mb )	p = JPanel( BorderLayout() )	p.setBorder( BorderFactory.createEtchedBorder() )	p.add( JScrollPane( ml ), BorderLayout.CENTER )	p.add( pf, BorderLayout.SOUTH )	f.getContentPane().add( p )	return f# params: agent-name, hub-namehost = java.net.InetAddress.getByName( sys.argv[3] )target = Handle.createHandle( sys.argv[2], host )ag = AgentManager.instance.createAgent( sys.argv[1], ag_observer( target ) )

⌨️ 快捷键说明

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