1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.mina.examples.sumup.codec;
20
21 import org.apache.mina.common.ByteBuffer;
22 import org.apache.mina.examples.sumup.message.AbstractMessage;
23 import org.apache.mina.examples.sumup.message.ResultMessage;
24 import org.apache.mina.protocol.ProtocolSession;
25 import org.apache.mina.protocol.codec.MessageDecoder;
26
27 /***
28 * A {@link MessageDecoder} that decodes {@link ResultMessage}.
29 *
30 * @author The Apache Directory Project
31 * @version $Rev: 332218 $, $Date: 2005-11-10 12:52:42 +0900 $
32 */
33 public class ResultMessageDecoder extends AbstractMessageDecoder
34 {
35 private int code;
36 private boolean readCode;
37
38 public ResultMessageDecoder()
39 {
40 super( Constants.RESULT );
41 }
42
43 protected AbstractMessage decodeBody( ProtocolSession session, ByteBuffer in )
44 {
45 if( !readCode )
46 {
47 if( in.remaining() < Constants.RESULT_CODE_LEN )
48 {
49 return null;
50 }
51
52 code = in.getShort();
53 readCode = true;
54 }
55
56 if( code == Constants.RESULT_OK )
57 {
58 if( in.remaining() < Constants.RESULT_VALUE_LEN )
59 {
60 return null;
61 }
62
63 ResultMessage m = new ResultMessage();
64 m.setOk( true );
65 m.setValue( in.getInt() );
66 readCode = false;
67 return m;
68 }
69 else
70 {
71 ResultMessage m = new ResultMessage();
72 m.setOk( false );
73 readCode = false;
74 return m;
75 }
76 }
77 }