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

📄 eventwriter.java

📁 Java games programing--很好的java游戏编程源码
💻 JAVA
字号:
package com.hypefiend.javagamebook.server;import com.hypefiend.javagamebook.common.*;import java.io.*;import java.nio.*;import java.nio.channels.*;import org.apache.log4j.Logger;/** * EventWriter.java * *  * @author <a href="mailto:bret@hypefiend.com">bret barker</a> * @version 1.0 */public class EventWriter extends Wrap {    /** reference to the GameServer */    private static GameServer gameServer;        /**      * contructor.     */    public EventWriter(GameServer gameServer, int numWorkers) {	this.gameServer = gameServer;	initWrap(numWorkers);    }    /**      * note we override the Wrap's run method here     * doing essentially the same thing, but      * first we allocate a ByteBuffer for this     * thread to use     */    public void run() { 	ByteBuffer writeBuffer = ByteBuffer.allocateDirect(Globals.MAX_EVENT_SIZE);	GameEvent event;	running = true;	while (running) {	    try {		if ((event = eventQueue.deQueue()) != null) {		    processEvent(event, writeBuffer);		}	    }	    catch(InterruptedException e) {	    }	}    }    /** unused */    protected void processEvent(GameEvent event) {    }    /**      * our own version of processEvent that takes      * the additional parameter of the writeBuffer      */    protected void processEvent(GameEvent event, ByteBuffer writeBuffer) {	NIOUtils.prepBuffer(event, writeBuffer);		String[] recipients = event.getRecipients();	if (recipients == null) {	    log.info("writeEvent: type=" + event.getType() + ", id=" + 		     event.getPlayerId() + ", msg=" + event.getMessage());	    String playerId = event.getPlayerId();	    write(playerId, writeBuffer);	}	else {	    for (int i = 0; i < recipients.length; i++) {		if (recipients[i] != null) {		    log.info("writeEvent(B): type=" + event.getType() + ", id=" + 			     recipients[i] + ", msg=" + event.getMessage());		    write(recipients[i], writeBuffer);		}	    }	}	    }        /**     * write the event to the given playerId's channel     */    private void write( String playerId, ByteBuffer writeBuffer) {		Player player = gameServer.getPlayerById(playerId);	SocketChannel channel = player.getChannel();		if (channel == null || !channel.isConnected()) {	    log.error("writeEvent: client channel null or not connected");	    return;	}		NIOUtils.channelWrite(channel, writeBuffer);    }    }// EventWriter

⌨️ 快捷键说明

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