@ Override public void write ( ChannelHandlerContext ctx , Object msg , ChannelPromise promise ) { String command = ( String ) msg ; if ( command . startsWith ( "get " ) ) { String keyString = command . substring ( "get " . length ( ) ) ; ByteBuf key = Unpooled . wrappedBuffer ( keyString . getBytes ( CharsetUtil . UTF_8 ) ) ; BinaryMemcacheRequest req = new DefaultBinaryMemcacheRequest ( key ) ; req . setOpcode ( BinaryMemcacheOpcodes . GET ) ; ctx . write ( req , promise ) ; } else if ( command . startsWith ( "set " ) ) { String [ ] parts = command . split ( " " , 3 ) ; if ( parts . length < 3 ) { throw new IllegalArgumentException ( "Malformed Command: " + command ) ; } String keyString = parts [ 1 ] ; String value = parts [ 2 ] ; ByteBuf key = Unpooled . wrappedBuffer ( keyString . getBytes ( CharsetUtil . UTF_8 ) ) ; ByteBuf content = Unpooled . wrappedBuffer ( value . getBytes ( CharsetUtil . UTF_8 ) ) ; ByteBuf extras = ctx . alloc ( ) . buffer ( 8 ) ; extras . writeZero ( 8 ) ; BinaryMemcacheRequest req = new DefaultFullBinaryMemcacheRequest ( key , extras , content ) ; req . setOpcode ( BinaryMemcacheOpcodes . SET ) ; ctx . write ( req , promise ) ; } else { throw new IllegalStateException ( "Unknown Message: " + msg ) ; } }
Transforms basic string requests to binary memcache requests