Mercurial > hg > RemoteEditor > REPSessionManager
diff rep/channel/REPSocketChannel.java @ 147:4ff68518e9ca
*** empty log message ***
author | kent |
---|---|
date | Wed, 27 Aug 2008 23:38:21 +0900 |
parents | ec625f8f8d7c |
children | 4cfed12aa3aa |
line wrap: on
line diff
--- a/rep/channel/REPSocketChannel.java Wed Aug 27 23:14:39 2008 +0900 +++ b/rep/channel/REPSocketChannel.java Wed Aug 27 23:38:21 2008 +0900 @@ -14,10 +14,20 @@ public class REPSocketChannel<P> extends SelectableChannel{ private SocketChannel sc; + private REPUnpack<P> unpack; + private REPPack<P> pack; public REPSocketChannel(SocketChannel channel) { sc = channel; } + + public void setUnpack(REPUnpack<P> _unpack){ + unpack = _unpack; + } + public void setPack(REPPack<P> _pack){ + pack = _pack; + } + @Override public Object blockingLock() { @@ -84,14 +94,19 @@ return null; } - public P read(){ - // TODO - return null; - + public P read() throws IOException{ + return unpack.unpackUConv(this); } public boolean write(P p){ - return false; - // + ByteBuffer bb = pack.packUConv(p); + try { + while (bb.remaining() > 0 ){ + sc.write(bb); + } + return true; + } catch (IOException e) { + return false; + } } public static <T> REPSocketChannel<T> create() throws IOException {