changeset 184:3c82100cdadd

*** empty log message ***
author kent
date Fri, 29 Aug 2008 16:38:11 +0900
parents eb89a73976fa
children c2c47d7675a8
files rep/channel/REPPack.java rep/channel/REPPacketSend.java rep/channel/REPSelectionKey.java rep/channel/REPSelector.java rep/channel/REPServerSocketChannel.java rep/channel/REPSocketChannel.java rep/channel/REPUnpack.java rep/channel/SelectableChannelSimulator.java
diffstat 8 files changed, 78 insertions(+), 107 deletions(-) [+]
line wrap: on
line diff
--- a/rep/channel/REPPack.java	Fri Aug 29 13:40:29 2008 +0900
+++ b/rep/channel/REPPack.java	Fri Aug 29 16:38:11 2008 +0900
@@ -1,9 +1,14 @@
 package rep.channel;
 
+import java.io.IOException;
 import java.nio.ByteBuffer;
+import java.nio.channels.SocketChannel;
 
 public interface REPPack<P> {
 
-	public abstract ByteBuffer packUConv(P command);
+	public ByteBuffer packUConv(P command);
+
+	public P unpackUConv(SocketChannel sc) throws IOException ;
+
 
 }
\ No newline at end of file
--- a/rep/channel/REPPacketSend.java	Fri Aug 29 13:40:29 2008 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-package rep.channel;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetEncoder;
-
-import rep.REPCommand;
-import rep.channel.REPPack;
-
-
-public class REPPacketSend implements REPPack<REPCommand> {
-	REPSocketChannel<REPCommand> socketchannel;
-	// JIS/S-JIS = 2, UTF-8 = 3, UTF-?? = 5 
-	final int CHAR_ORDER = 5;
-
-	public REPPacketSend(REPSocketChannel<REPCommand> channel){
-		socketchannel = channel;
-	}
-	
-	/* (non-Javadoc)
-	 * @see rep.REPPack#packUConv(rep.REPCommand)
-	 */
-	public ByteBuffer packUConv(REPCommand command){		
-    	System.out.println("send command byUTF8: " + command.toString());
-    	if(command.string == null){
-    		command.setString("test");
-    	}
-    	ByteBuffer buffer = ByteBuffer.allocateDirect(24+(command.string.length()*CHAR_ORDER));
-    	buffer.clear();  // position = 0 
-    	buffer.putInt(command.cmd); buffer.putInt(command.sid); buffer.putInt(command.eid);
-    	buffer.putInt(command.seq); buffer.putInt(command.lineno);     	
-    	
-    	int pos = buffer.position();
-    	buffer.putInt(0);     	
-    	
-    	//Encode to UTF8
-    	CharBuffer cb = CharBuffer.wrap(command.string);
-   		Charset charset = Charset.forName("UTF-8");
-		CharsetEncoder encoder = charset.newEncoder();
-		try {
-			encoder.encode(cb, buffer, true);
-		} catch (IllegalStateException e) {
-			e.printStackTrace();
-		}
-		
-		//Encoded string length set
-		int length = (buffer.position() -pos) -4;
-		System.out.println("UTF-8: Set REPComand textlen(Byte) : " + (buffer.position() - pos-4));  
-		if(length < 0) {
-			length = 0;
-		}
-		buffer.putInt(pos, length);
-
-		buffer.limit(24+length);
-		buffer.rewind();
-		
-		return buffer;    	
-	}
-	
-	/* (non-Javadoc)
-	 * @see rep.REPPack#send(rep.REPCommand)
-	 */
-	public void send(REPCommand command){
-		try {
-			//socketchannel.write(pack(command));
-			socketchannel.write(packUConv(command));
-			//System.out.println(command.toString());
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rep/channel/REPSelectionKey.java	Fri Aug 29 16:38:11 2008 +0900
@@ -0,0 +1,51 @@
+package rep.channel;
+
+import java.nio.channels.SelectableChannel;
+import java.nio.channels.SelectionKey;
+import java.nio.channels.Selector;
+
+public class REPSelectionKey extends SelectionKey {
+
+	@Override
+	public void cancel() {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public SelectableChannel channel() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public int interestOps() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	@Override
+	public SelectionKey interestOps(int ops) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public boolean isValid() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public int readyOps() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	@Override
+	public Selector selector() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+}
--- a/rep/channel/REPSelector.java	Fri Aug 29 13:40:29 2008 +0900
+++ b/rep/channel/REPSelector.java	Fri Aug 29 16:38:11 2008 +0900
@@ -61,6 +61,12 @@
 
 	@Override
 	public Set<SelectionKey> selectedKeys() {
+		/*
+		Set<SelectionKey> keys = new HashSet<SelectionKey>();
+		for (SelectionKey key: selector.selectedKeys()){
+			keys.add(new SelectionKeySimulator(new REPSocketChannel<?>(), key.readyOps(), selector));
+			new SelectionKey();
+		}*/
 		return selector.selectedKeys();
 	}
 
--- a/rep/channel/REPServerSocketChannel.java	Fri Aug 29 13:40:29 2008 +0900
+++ b/rep/channel/REPServerSocketChannel.java	Fri Aug 29 16:38:11 2008 +0900
@@ -16,15 +16,16 @@
 
 	public static boolean isSimulation;
 	private ServerSocketChannel ss;
+	private REPPack<P> packer;
 	
-	protected REPServerSocketChannel(SelectorProvider provider) {
+	/*protected REPServerSocketChannel(SelectorProvider provider) {
 		super(provider);
-		
-	}
+	}*/
 	
-	public REPServerSocketChannel(ServerSocketChannel channel){
+	public REPServerSocketChannel(ServerSocketChannel channel, REPPack<P> _packer){
 		super(null);
 		ss = channel;
+		packer = _packer;
 	}
 
 	public REPServerSocketChannel() {
@@ -32,16 +33,16 @@
 		
 	}
 
-	public static <T> REPServerSocketChannel<T> open() throws IOException{
+	public static <T> REPServerSocketChannel<T> open(REPPack<T> packer) throws IOException{
 		if(isSimulation){
 			return new ServerChannelSimulator<T>();
 		}else{
-			return new REPServerSocketChannel<T>(ServerSocketChannel.open());
+			return new REPServerSocketChannel<T>(ServerSocketChannel.open(), packer);
 		}
 	}
 
 	public REPSocketChannel<P> accept1() throws IOException {
-		return new REPSocketChannel<P>(ss.accept());
+		return new REPSocketChannel<P>(ss.accept(), packer);
 	}
 
 	@Override
--- a/rep/channel/REPSocketChannel.java	Fri Aug 29 13:40:29 2008 +0900
+++ b/rep/channel/REPSocketChannel.java	Fri Aug 29 16:38:11 2008 +0900
@@ -9,26 +9,17 @@
 import java.nio.channels.SelectionKey;
 import java.nio.channels.Selector;
 import java.nio.channels.SocketChannel;
-import java.nio.channels.ServerSocketChannel;
 import java.nio.channels.spi.SelectorProvider;
 
 public class REPSocketChannel<P> extends SelectableChannel{
 
 	private SocketChannel sc;
-	private REPUnpack<P> unpack;
 	private REPPack<P> pack;
 
-	public REPSocketChannel(SocketChannel channel) {
+	public REPSocketChannel(SocketChannel channel, REPPack<P> packer) {
 		sc = channel;
+		pack = packer;
 	}
-	
-	public void setUnpack(REPUnpack<P> _unpack){
-		unpack = _unpack;
-	}
-	public void setPack(REPPack<P> _pack){
-		pack = _pack;
-	}
-	
 
 	@Override
 	public Object blockingLock() {
@@ -96,7 +87,7 @@
 	}
 	
 	public P read() throws IOException{
-		return unpack.unpackUConv(sc);
+		return pack.unpackUConv(sc);
 	}
 	public boolean write(P p){
 		ByteBuffer bb = pack.packUConv(p);
@@ -110,11 +101,12 @@
 		}
 	}
 
-	public static <T> REPSocketChannel<T> create() throws IOException {
+	public static <T> REPSocketChannel<T> create(REPPack<T> packer) throws IOException {
 		if (REPServerSocketChannel.isSimulation) {
 			return new ChannelSimulator<T>();
 		} else {
-			return new REPSocketChannel<T>(SocketChannel.open());
+			REPSocketChannel<T> rsc = new REPSocketChannel<T>(SocketChannel.open(), packer);
+			return rsc;
 		}
 	}
 
--- a/rep/channel/REPUnpack.java	Fri Aug 29 13:40:29 2008 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-package rep.channel;
-
-import java.io.IOException;
-import java.nio.channels.SocketChannel;
-
-public interface REPUnpack<P> {
-
-	public P unpackUConv(SocketChannel sc) throws IOException;
-	
-}
\ No newline at end of file
--- a/rep/channel/SelectableChannelSimulator.java	Fri Aug 29 13:40:29 2008 +0900
+++ b/rep/channel/SelectableChannelSimulator.java	Fri Aug 29 16:38:11 2008 +0900
@@ -12,7 +12,7 @@
 	protected SelectorSimulator readSelector;
 
 	public SelectableChannelSimulator(SocketChannel channel) {
-		super(channel);
+		super(channel, null);
 	}
 	
 	/* read from Queue.  */