1 | /* |
2 | * @(#) $Id: TextLineEncoder.java 327113 2005-10-21 06:59:15Z trustin $ |
3 | * |
4 | * Copyright 2004 The Apache Software Foundation |
5 | * |
6 | * Licensed under the Apache License, Version 2.0 (the "License"); |
7 | * you may not use this file except in compliance with the License. |
8 | * You may obtain a copy of the License at |
9 | * |
10 | * http://www.apache.org/licenses/LICENSE-2.0 |
11 | * |
12 | * Unless required by applicable law or agreed to in writing, software |
13 | * distributed under the License is distributed on an "AS IS" BASIS, |
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
15 | * See the License for the specific language governing permissions and |
16 | * limitations under the License. |
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 The Apache Directory Project (dev@directory.apache.org) |
31 | * @version $Rev: 327113 $, $Date: 2005-10-21 15:59:15 +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 | // Don't accept too long strings. |
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 | } |