1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.mina.examples.reverser;
20
21 import org.apache.mina.common.ByteBuffer;
22 import org.apache.mina.protocol.ProtocolEncoder;
23 import org.apache.mina.protocol.ProtocolEncoderOutput;
24 import org.apache.mina.protocol.ProtocolSession;
25 import org.apache.mina.protocol.ProtocolViolationException;
26
27 /***
28 * Encodes a string into a text line which ends with <code>"\r\n"</code>.
29 *
30 * @author Trustin Lee (trustin@apache.org)
31 * @version $Rev: 264677 $, $Date: 2005-08-30 11:44:35 +0900 $,
32 */
33 public class TextLineEncoder implements ProtocolEncoder
34 {
35
36 public void encode( ProtocolSession session, Object message,
37 ProtocolEncoderOutput out )
38 throws ProtocolViolationException
39 {
40
41 String val = message.toString();
42
43 if( val.length() > 256 )
44 {
45 throw new ProtocolViolationException(
46 "Cannot encode too long string." );
47 }
48
49 val += "\r\n";
50
51 ByteBuffer buf = ByteBuffer.allocate( val.length() );
52 for( int i = 0; i < val.length(); i++ )
53 {
54 buf.put( ( byte ) val.charAt( i ) );
55 }
56
57 buf.flip();
58 out.write( buf );
59 }
60 }