package org.i2peer.reactor.impl.jxta;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.SelectableChannel;
import java.nio.channels.SelectionKey;
import java.nio.channels.SocketChannel;
import org.i2peer.reactor.EventHandler;
public class JxtaEventHandler implements EventHandler {
private SocketChannel channel;
public JxtaEventHandler(SocketChannel channel) {
if(channel == null) {
throw new IllegalArgumentException("Channel is null");
}
try {
channel.configureBlocking(false);
} catch (IOException e) {
e.printStackTrace();
}
this.channel = channel;
}
@Override
public void handleEvent(int eventType) {
switch (eventType) {
case SelectionKey.OP_READ:
ByteBuffer buffer = ByteBuffer.allocate(1024);
try {
while ((channel.read(buffer)) > 0) {
buffer.flip();
//TODO: process messages
System.out.print(new String(buffer.array()));
}
} catch (IOException e) {
e.printStackTrace();
}
break;
case SelectionKey.OP_WRITE:
break;
}
/*
try {
channel.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
*/
}
@Override
public SelectableChannel getChannel() {
return channel;
}
}