Change the logger to the Standard Java Logger

This commit is contained in:
Ziver Koc 2010-05-18 21:06:40 +00:00
parent afac27d828
commit b0af041598
4 changed files with 53 additions and 44 deletions

View file

@ -14,10 +14,12 @@ import java.util.Iterator;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.logging.Logger;
import zutil.Encrypter; import zutil.Encrypter;
import zutil.MultiPrintStream; import zutil.MultiPrintStream;
import zutil.converters.Converter; import zutil.converters.Converter;
import zutil.log.LogUtil;
import zutil.network.nio.message.type.ResponseRequestMessage; import zutil.network.nio.message.type.ResponseRequestMessage;
import zutil.network.nio.message.type.SystemMessage; import zutil.network.nio.message.type.SystemMessage;
import zutil.network.nio.response.ResponseEvent; import zutil.network.nio.response.ResponseEvent;
@ -29,14 +31,7 @@ import zutil.struct.DynamicByteArrayStream;
public abstract class NioNetwork implements Runnable { public abstract class NioNetwork implements Runnable {
/** private static Logger logger = LogUtil.getLogger();
* Debug level
* 0 = nothing
* 1 = connection info
* 2 = message debug
* 3 = selector debug
*/
public static final int DEBUG = 2;
public static enum NetworkType {SERVER, CLIENT}; public static enum NetworkType {SERVER, CLIENT};
private NetworkType type; private NetworkType type;
@ -139,7 +134,7 @@ public abstract class NioNetwork implements Runnable {
* @param data The data to send * @param data The data to send
*/ */
protected void queueSend(SocketChannel socket, byte[] data){ protected void queueSend(SocketChannel socket, byte[] data){
if(DEBUG>=3) MultiPrintStream.out.println("Sending Queue..."); logger.finest("Sending Queue...");
// And queue the data we want written // And queue the data we want written
synchronized (pendingWriteData) { synchronized (pendingWriteData) {
List<ByteBuffer> queue = pendingWriteData.get(socket); List<ByteBuffer> queue = pendingWriteData.get(socket);
@ -157,13 +152,13 @@ public abstract class NioNetwork implements Runnable {
// Indicate we want the interest ops set changed // Indicate we want the interest ops set changed
pendingChanges.add(new ChangeRequest(socket, ChangeRequest.CHANGEOPS, SelectionKey.OP_WRITE)); pendingChanges.add(new ChangeRequest(socket, ChangeRequest.CHANGEOPS, SelectionKey.OP_WRITE));
} }
if(DEBUG>=3) MultiPrintStream.out.println("selector.wakeup();"); logger.finest("selector.wakeup();");
// Finally, wake up our selecting thread so it can make the required changes // Finally, wake up our selecting thread so it can make the required changes
selector.wakeup(); selector.wakeup();
} }
public void run() { public void run() {
if(DEBUG>=1)MultiPrintStream.out.println("NioNetwork Started!!!"); logger.fine("NioNetwork Started!!!");
while (true) { while (true) {
try { try {
// Process any pending changes // Process any pending changes
@ -175,11 +170,11 @@ public abstract class NioNetwork implements Runnable {
case ChangeRequest.CHANGEOPS: case ChangeRequest.CHANGEOPS:
SelectionKey key = change.socket.keyFor(selector); SelectionKey key = change.socket.keyFor(selector);
key.interestOps(change.ops); key.interestOps(change.ops);
if(DEBUG>=3) MultiPrintStream.out.println("change.ops "+change.ops); logger.finest("change.ops "+change.ops);
break; break;
case ChangeRequest.REGISTER: case ChangeRequest.REGISTER:
change.socket.register(selector, change.ops); change.socket.register(selector, change.ops);
if(DEBUG>=3) MultiPrintStream.out.println("register socket "); logger.finest("register socket ");
break; break;
} }
} }
@ -188,31 +183,31 @@ public abstract class NioNetwork implements Runnable {
// Wait for an event one of the registered channels // Wait for an event one of the registered channels
selector.select(); selector.select();
if(DEBUG>=3) MultiPrintStream.out.println("selector is awake"); logger.finest("selector is awake");
// Iterate over the set of keys for which events are available // Iterate over the set of keys for which events are available
Iterator<SelectionKey> selectedKeys = selector.selectedKeys().iterator(); Iterator<SelectionKey> selectedKeys = selector.selectedKeys().iterator();
while (selectedKeys.hasNext()) { while (selectedKeys.hasNext()) {
SelectionKey key = (SelectionKey) selectedKeys.next(); SelectionKey key = (SelectionKey) selectedKeys.next();
selectedKeys.remove(); selectedKeys.remove();
if(DEBUG>=3) MultiPrintStream.out.println("KeyOP: "+key.interestOps()+" isAcceptable: "+SelectionKey.OP_ACCEPT+" isConnectable: "+SelectionKey.OP_CONNECT+" isWritable: "+SelectionKey.OP_WRITE+" isReadable: "+SelectionKey.OP_READ); logger.finest("KeyOP: "+key.interestOps()+" isAcceptable: "+SelectionKey.OP_ACCEPT+" isConnectable: "+SelectionKey.OP_CONNECT+" isWritable: "+SelectionKey.OP_WRITE+" isReadable: "+SelectionKey.OP_READ);
if (key.isValid()) { if (key.isValid()) {
// Check what event is available and deal with it // Check what event is available and deal with it
if (key.isAcceptable()) { if (key.isAcceptable()) {
if(DEBUG>=3) MultiPrintStream.out.println("Accepting Connection!!"); logger.finest("Accepting Connection!!");
accept(key); accept(key);
} }
else if (key.isConnectable()) { else if (key.isConnectable()) {
if(DEBUG>=3) MultiPrintStream.out.println("Finnishing Connection!!"); logger.finest("Finnishing Connection!!");
finishConnection(key); finishConnection(key);
} }
else if (key.isWritable()) { else if (key.isWritable()) {
if(DEBUG>=3) MultiPrintStream.out.println("Writing"); logger.finest("Writing");
write(key); write(key);
} }
else if (key.isReadable()) { else if (key.isReadable()) {
if(DEBUG>=3) MultiPrintStream.out.println("Reading"); logger.finest("Reading");
read(key); read(key);
} }
} }
@ -243,7 +238,7 @@ public abstract class NioNetwork implements Runnable {
InetSocketAddress remoteAdr = (InetSocketAddress) socketChannel.socket().getRemoteSocketAddress(); InetSocketAddress remoteAdr = (InetSocketAddress) socketChannel.socket().getRemoteSocketAddress();
if(!clients.containsValue(remoteAdr)){ if(!clients.containsValue(remoteAdr)){
clients.put(remoteAdr, new ClientData(socketChannel)); clients.put(remoteAdr, new ClientData(socketChannel));
if(DEBUG>=1)MultiPrintStream.out.println("New Connection("+remoteAdr+")!!! Count: "+clients.size()); logger.fine("New Connection("+remoteAdr+")!!! Count: "+clients.size());
} }
} }
@ -269,8 +264,9 @@ public abstract class NioNetwork implements Runnable {
clients.remove(remoteAdr); clients.remove(remoteAdr);
pendingReadData.remove(socketChannel); pendingReadData.remove(socketChannel);
pendingWriteData.remove(socketChannel); pendingWriteData.remove(socketChannel);
if(DEBUG>=1) MultiPrintStream.out.println("Connection Forced Close("+remoteAdr+")!!! Connection Count: "+clients.size()); logger.fine("Connection Forced Close("+remoteAdr+")!!! Connection Count: "+clients.size());
if(type == NetworkType.CLIENT) throw new IOException("Server Closed The Connection!!!"); if(type == NetworkType.CLIENT)
throw new IOException("Server Closed The Connection!!!");
return; return;
} }
@ -282,8 +278,9 @@ public abstract class NioNetwork implements Runnable {
clients.remove(remoteAdr); clients.remove(remoteAdr);
pendingReadData.remove(socketChannel); pendingReadData.remove(socketChannel);
pendingWriteData.remove(socketChannel); pendingWriteData.remove(socketChannel);
if(DEBUG>=1) MultiPrintStream.out.println("Connection Close("+remoteAdr+")!!! Connection Count: "+clients.size()); logger.fine("Connection Close("+remoteAdr+")!!! Connection Count: "+clients.size());
if(type == NetworkType.CLIENT) throw new IOException("Server Closed The Connection!!!"); if(type == NetworkType.CLIENT)
throw new IOException("Server Closed The Connection!!!");
return; return;
} }
@ -334,7 +331,7 @@ public abstract class NioNetwork implements Runnable {
socketChannel.write(buf); socketChannel.write(buf);
if (buf.remaining() > 0) { if (buf.remaining() > 0) {
// ... or the socket's buffer fills up // ... or the socket's buffer fills up
if(DEBUG>=3) MultiPrintStream.out.println("Write Buffer Full!!"); logger.finest("Write Buffer Full!!");
break; break;
} }
queue.remove(0); queue.remove(0);
@ -344,32 +341,32 @@ public abstract class NioNetwork implements Runnable {
// We wrote away all data, so we're no longer interested // We wrote away all data, so we're no longer interested
// in writing on this socket. Switch back to waiting for // in writing on this socket. Switch back to waiting for
// data. // data.
if(DEBUG>=3) MultiPrintStream.out.println("No more Data to write!!"); logger.finest("No more Data to write!!");
key.interestOps(SelectionKey.OP_READ); key.interestOps(SelectionKey.OP_READ);
} }
} }
} }
private void handleRecivedMessage(SocketChannel socketChannel, Object rspData){ private void handleRecivedMessage(SocketChannel socketChannel, Object rspData){
if(DEBUG>=2) MultiPrintStream.out.println("Handling incomming message..."); logger.finer("Handling incomming message...");
if(rspData instanceof SystemMessage){ if(rspData instanceof SystemMessage){
if(systemWorker != null){ if(systemWorker != null){
if(DEBUG>=3) MultiPrintStream.out.println("System Message!!!"); logger.finest("System Message!!!");
systemWorker.processData(this, socketChannel, rspData); systemWorker.processData(this, socketChannel, rspData);
} }
else{ else{
if(DEBUG>=2) MultiPrintStream.out.println("Unhandled System Message!!!"); logger.finer("Unhandled System Message!!!");
} }
} }
else{ else{
// Hand the data off to our worker thread // Hand the data off to our worker thread
if(worker != null){ if(worker != null){
if(DEBUG>=3) MultiPrintStream.out.println("Worker Message!!!"); logger.finest("Worker Message!!!");
worker.processData(this, socketChannel, rspData); worker.processData(this, socketChannel, rspData);
} }
else{ else{
if(DEBUG>=1) MultiPrintStream.out.println("Unhandled Worker Message!!!"); logger.fine("Unhandled Worker Message!!!");
} }
} }
} }
@ -382,7 +379,7 @@ public abstract class NioNetwork implements Runnable {
SocketChannel socketChannel = SocketChannel.open(); SocketChannel socketChannel = SocketChannel.open();
socketChannel.socket().setReuseAddress(true); socketChannel.socket().setReuseAddress(true);
socketChannel.configureBlocking(false); socketChannel.configureBlocking(false);
if(DEBUG>=1)MultiPrintStream.out.println("Connecting to: "+address); logger.fine("Connecting to: "+address);
// Kick off connection establishment // Kick off connection establishment
socketChannel.connect(address); socketChannel.connect(address);

View file

@ -3,14 +3,21 @@ package zutil.network.nio.service.chat;
import java.nio.channels.SocketChannel; import java.nio.channels.SocketChannel;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.logging.Logger;
import zutil.MultiPrintStream; import zutil.log.LogUtil;
import zutil.network.nio.NioNetwork; import zutil.network.nio.NioNetwork;
import zutil.network.nio.message.ChatMessage; import zutil.network.nio.message.ChatMessage;
import zutil.network.nio.message.Message; import zutil.network.nio.message.Message;
import zutil.network.nio.service.NetworkService; import zutil.network.nio.service.NetworkService;
/**
* A simple chat service with users and rooms
*
* @author Ziver
*/
public class ChatService extends NetworkService{ public class ChatService extends NetworkService{
private static Logger logger = LogUtil.getLogger();
private HashMap<String,LinkedList<SocketChannel>> rooms; private HashMap<String,LinkedList<SocketChannel>> rooms;
private ChatListener listener; private ChatListener listener;
@ -43,7 +50,7 @@ public class ChatService extends NetworkService{
} }
} }
} }
if(NioNetwork.DEBUG>=2)MultiPrintStream.out.println("New Chat Message: "+chatmessage.msg); logger.finer("New Chat Message: "+chatmessage.msg);
listener.messageAction(chatmessage.msg, chatmessage.room); listener.messageAction(chatmessage.msg, chatmessage.room);
} }
// register to a room // register to a room
@ -78,7 +85,7 @@ public class ChatService extends NetworkService{
*/ */
public void registerUser(String room, SocketChannel socket){ public void registerUser(String room, SocketChannel socket){
addRoom(room); addRoom(room);
if(NioNetwork.DEBUG>=1)MultiPrintStream.out.println("New Chat User: "+socket); logger.fine("New Chat User: "+socket);
rooms.get(room).add(socket); rooms.get(room).add(socket);
} }
@ -90,7 +97,7 @@ public class ChatService extends NetworkService{
*/ */
public void unRegisterUser(String room, SocketChannel socket){ public void unRegisterUser(String room, SocketChannel socket){
if(rooms.containsKey(room)){ if(rooms.containsKey(room)){
if(NioNetwork.DEBUG>=1)MultiPrintStream.out.println("Remove Chat User: "+socket); logger.fine("Remove Chat User: "+socket);
rooms.get(room).remove(socket); rooms.get(room).remove(socket);
removeRoom(room); removeRoom(room);
} }
@ -103,7 +110,7 @@ public class ChatService extends NetworkService{
*/ */
public void addRoom(String room){ public void addRoom(String room){
if(!rooms.containsKey(room)){ if(!rooms.containsKey(room)){
if(NioNetwork.DEBUG>=1)MultiPrintStream.out.println("New Chat Room: "+room); logger.fine("New Chat Room: "+room);
rooms.put(room, new LinkedList<SocketChannel>()); rooms.put(room, new LinkedList<SocketChannel>());
} }
} }
@ -115,7 +122,7 @@ public class ChatService extends NetworkService{
*/ */
public void removeRoom(String room){ public void removeRoom(String room){
if(rooms.get(room).isEmpty()){ if(rooms.get(room).isEmpty()){
if(NioNetwork.DEBUG>=1)MultiPrintStream.out.println("Remove Chat Room: "+room); logger.fine("Remove Chat Room: "+room);
rooms.remove(room); rooms.remove(room);
} }
} }

View file

@ -2,14 +2,17 @@ package zutil.network.nio.service.sync;
import java.nio.channels.SocketChannel; import java.nio.channels.SocketChannel;
import java.util.HashMap; import java.util.HashMap;
import java.util.logging.Logger;
import zutil.MultiPrintStream; import zutil.MultiPrintStream;
import zutil.log.LogUtil;
import zutil.network.nio.NioNetwork; import zutil.network.nio.NioNetwork;
import zutil.network.nio.message.Message; import zutil.network.nio.message.Message;
import zutil.network.nio.message.SyncMessage; import zutil.network.nio.message.SyncMessage;
import zutil.network.nio.service.NetworkService; import zutil.network.nio.service.NetworkService;
public class SyncService extends NetworkService{ public class SyncService extends NetworkService{
private static Logger logger = LogUtil.getLogger();
// list of objects to sync // list of objects to sync
private HashMap<String, ObjectSync> sync; private HashMap<String, ObjectSync> sync;
@ -24,7 +27,7 @@ public class SyncService extends NetworkService{
*/ */
public void addSyncObject(ObjectSync os){ public void addSyncObject(ObjectSync os){
sync.put(os.id, os); sync.put(os.id, os);
if(NioNetwork.DEBUG>=1)MultiPrintStream.out.println("New Sync object: "+os); logger.fine("New Sync object: "+os);
} }
public void handleMessage(Message message, SocketChannel socket){ public void handleMessage(Message message, SocketChannel socket){
@ -33,7 +36,7 @@ public class SyncService extends NetworkService{
if(syncMessage.type == SyncMessage.MessageType.SYNC){ if(syncMessage.type == SyncMessage.MessageType.SYNC){
ObjectSync obj = sync.get(syncMessage.id); ObjectSync obj = sync.get(syncMessage.id);
if(obj != null){ if(obj != null){
if(NioNetwork.DEBUG>=2)MultiPrintStream.out.println("Syncing Message..."); logger.finer("Syncing Message...");
obj.syncObject(syncMessage); obj.syncObject(syncMessage);
} }
} }

View file

@ -2,8 +2,9 @@ package zutil.network.nio.worker;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.logging.Logger;
import zutil.MultiPrintStream; import zutil.log.LogUtil;
import zutil.network.nio.NioNetwork; import zutil.network.nio.NioNetwork;
import zutil.network.nio.message.ChatMessage; import zutil.network.nio.message.ChatMessage;
import zutil.network.nio.message.Message; import zutil.network.nio.message.Message;
@ -17,6 +18,7 @@ import zutil.network.nio.service.sync.SyncService;
public class SystemWorker extends ThreadedEventWorker { public class SystemWorker extends ThreadedEventWorker {
private static Logger logger = LogUtil.getLogger();
private NioNetwork nio; private NioNetwork nio;
// Maps a SocketChannel to a RspHandler // Maps a SocketChannel to a RspHandler
private Map<Double, ResponseEvent> rspEvents = new HashMap<Double, ResponseEvent>(); private Map<Double, ResponseEvent> rspEvents = new HashMap<Double, ResponseEvent>();
@ -34,19 +36,19 @@ public class SystemWorker extends ThreadedEventWorker {
@Override @Override
public void messageEvent(WorkerDataEvent event) { public void messageEvent(WorkerDataEvent event) {
try { try {
if(NioNetwork.DEBUG>=2) MultiPrintStream.out.println("System Message: "+event.data.getClass().getName()); logger.finer("System Message: "+event.data.getClass().getName());
if(event.data instanceof Message){ if(event.data instanceof Message){
if(event.data instanceof EchoMessage && ((EchoMessage)event.data).echo()){ if(event.data instanceof EchoMessage && ((EchoMessage)event.data).echo()){
// Echos back the recived message // Echos back the recived message
((EchoMessage)event.data).recived(); ((EchoMessage)event.data).recived();
if(NioNetwork.DEBUG>=3) MultiPrintStream.out.println("Echoing Message: "+event.data); logger.finer("Echoing Message: "+event.data);
nio.send(event.socket, event.data); nio.send(event.socket, event.data);
} }
else if(event.data instanceof ResponseRequestMessage && else if(event.data instanceof ResponseRequestMessage &&
rspEvents.get(((ResponseRequestMessage)event.data).getResponseId()) != null){ rspEvents.get(((ResponseRequestMessage)event.data).getResponseId()) != null){
// Handle the response // Handle the response
handleResponse(((ResponseRequestMessage)event.data).getResponseId(), event.data); handleResponse(((ResponseRequestMessage)event.data).getResponseId(), event.data);
if(NioNetwork.DEBUG>=3) MultiPrintStream.out.println("Response Request Message: "+event.data); logger.finer("Response Request Message: "+event.data);
} }
else{ else{
//Services //Services