1   /*
2    *  Copyright 2006 Simon Raess
3    *
4    *  Licensed under the Apache License, Version 2.0 (the "License");
5    *  you may not use this file except in compliance with the License.
6    *  You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   *  Unless required by applicable law or agreed to in writing, software
11   *  distributed under the License is distributed on an "AS IS" BASIS,
12   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   *  See the License for the specific language governing permissions and
14   *  limitations under the License.
15   */
16  package net.sf.beep4j.integration;
17  
18  import java.nio.ByteBuffer;
19  
20  import net.sf.beep4j.Message;
21  import net.sf.beep4j.MessageBuilder;
22  import net.sf.beep4j.Reply;
23  import net.sf.beep4j.ext.ChannelHandlerAdapter;
24  
25  public class OneToManyEchoProfileHandler extends ChannelHandlerAdapter {
26  	
27  	public static final String PROFILE = "http://www.iserver.ch/profiles/echo-2";
28  	
29  	private final int blockSize;
30  	
31  	public OneToManyEchoProfileHandler(int blockSize) {
32  		this.blockSize = blockSize;
33  	}
34  	
35  	public void messageReceived(Message message, Reply handler) {
36  		ByteBuffer buffer = message.getContentBuffer();
37  		int remaining = buffer.remaining();
38  		
39  		while (remaining > 0) {
40  			MessageBuilder builder = handler.createMessageBuilder();
41  			int size = Math.min(blockSize, remaining);
42  			buffer.limit(buffer.position() + size);
43  			builder.getContentBuffer(size).put(buffer);
44  			handler.sendANS(builder.getMessage());
45  			remaining -= size;
46  		}
47  		
48  		handler.sendNUL();
49  	}
50  
51  }