Mercurial > hg > RemoteEditor > REPSessionManager
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. */