Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2012 The Netty Project
   *
   * The Netty Project licenses this file to you under the Apache License,
   * version 2.0 (the "License"); you may not use this file except in compliance
   * with the License. You may obtain a copy of the License at:
   *
   *   http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  * License for the specific language governing permissions and limitations
  * under the License.
  */
 package divconq.io.test;
 
 
 
 	protected Thread worker = null;
 	protected Channel chan = null;
 	protected AtomicLong gotten = new AtomicLong();
 	protected AtomicLong proc = new AtomicLong();
 	
 	public LocalEchoServerHandler() {
 		this. = new Thread(new Runnable() {
 			public void run() {
 				while (true) {
 					try {
 						String msg = .take();
 						
 						long gg = .get();
 						long pp = .incrementAndGet();
 						
 						if (msg.length() == 512)
 							..println("Processing " + pp + " of " + gg);
 						else
 							..println("ERROR Processing " + pp + " of " + gg + " ERROR ==============================================================");
 						
 						// do processing
 						//Thread.sleep(2);
 						
 						//System.out.println("Echo and read: " + msg);
 						
 						//ByteBuf b = Unpooled.wrappedBuffer(Utf8Encoder.encode(">" + msg + "<"));
 						
 						//chan.writeAndFlush(b);
 						
 						//chan.config().setAutoRead(true);
 						
 						if (.size() == 0)
 							.read();
 					} 
 					catch (InterruptedException x) {
 					}
 				}
 			}
 		});
 		
 		this..setDaemon(true);
 		this..start();
 	}
 	
     private ByteBuf buf = null;
 
     @Override
     public void handlerAdded(ChannelHandlerContext ctx) {
         this. = ctx.alloc().buffer(512); // (1)
     }
 
     @Override
     public void handlerRemoved(ChannelHandlerContext ctx) {
     	this..release(); // (1)
     	this. = null;
     }
     
     @Override
     public void channelActive(ChannelHandlerContext ctxthrows Exception {
     	super.channelActive(ctx);
     	
     	// allow first read
     	ctx.channel().read();
     }
     
 	public void channelRead(ChannelHandlerContext ctxObject msgthrows Exception {
 		if (this. == null)
 			this. = ctx.channel();
		this..config().setAutoRead(false);
		ByteBuf m = (ByteBufmsg;
		boolean more = m.readableBytes() > 0;
        
		//System.out.println("got: " + m.readableBytes());
		while (more) {
			int amt = Math.min(this..writableBytes(), m.readableBytes());
	        this..writeBytes(mm.readerIndex(), amt); // (2)
	        m.skipBytes(amt);
	        
	        if (m.readableBytes() == 0) {
	        	m.release();
	        	more = false;
	        }
	        
	        if (this..writerIndex() == 512) {
				this..add(Utf8Decoder.decode(this.).toString());
				this..clear();
	        }
		}
        // Write back as received
        //ctx.write(msg);
	}
	public void channelReadComplete(ChannelHandlerContext ctxthrows Exception {
        //ctx.flush();
		//System.out.println("read complete");
	}
    @Override
    public void exceptionCaught(ChannelHandlerContext ctxThrowable cause) {
        cause.printStackTrace();
        ctx.close();
    }
    
    @Override
    public void userEventTriggered(ChannelHandlerContext ctxObject evt)
    		throws Exception {
    	
    	// on success the request first read
    	if (evt == .) {
    		ctx.read();
    	}
    }
New to GrepCode? Check out our FAQ X