1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.directory.server.changepw.protocol;
22
23
24 import java.io.IOException;
25
26 import org.apache.directory.server.changepw.io.ChangePasswordErrorEncoder;
27 import org.apache.directory.server.changepw.io.ChangePasswordReplyEncoder;
28 import org.apache.directory.server.changepw.messages.ChangePasswordError;
29 import org.apache.directory.server.changepw.messages.ChangePasswordReply;
30 import org.apache.mina.common.ByteBuffer;
31 import org.apache.mina.common.IoSession;
32 import org.apache.mina.filter.codec.ProtocolEncoderAdapter;
33 import org.apache.mina.filter.codec.ProtocolEncoderOutput;
34
35
36
37
38
39
40 public class ChangePasswordTcpEncoder extends ProtocolEncoderAdapter
41 {
42 ChangePasswordReplyEncoder replyEncoder = new ChangePasswordReplyEncoder();
43 ChangePasswordErrorEncoder errorEncoder = new ChangePasswordErrorEncoder();
44
45
46 public void encode( IoSession session, Object message, ProtocolEncoderOutput out ) throws IOException
47 {
48 ByteBuffer buf = ByteBuffer.allocate( 512 );
49
50
51 buf.putInt( 0 );
52
53 if ( message instanceof ChangePasswordReply )
54 {
55 replyEncoder.encode( buf.buf(), ( ChangePasswordReply ) message );
56 }
57 else
58 {
59 if ( message instanceof ChangePasswordError )
60 {
61 errorEncoder.encode( buf.buf(), ( ChangePasswordError ) message );
62 }
63 }
64
65
66 int pos = buf.position();
67
68
69 int recordLength = buf.position() - 4;
70
71
72 buf.rewind();
73 buf.putInt( recordLength );
74
75
76 buf.position( pos );
77 buf.flip();
78
79 out.write( buf );
80 }
81 }