1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulShutdown;
21
22
23 import java.nio.ByteBuffer;
24
25 import org.apache.directory.api.asn1.DecoderException;
26 import org.apache.directory.api.asn1.ber.Asn1Decoder;
27 import org.apache.directory.api.asn1.ber.tlv.BerValue;
28 import org.apache.directory.api.asn1.util.Asn1Buffer;
29 import org.apache.directory.api.ldap.codec.api.AbstractExtendedOperationFactory;
30 import org.apache.directory.api.ldap.codec.api.ExtendedOperationFactory;
31 import org.apache.directory.api.ldap.codec.api.LdapApiService;
32 import org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect.GracefulActionConstants;
33 import org.apache.directory.api.ldap.extras.extended.gracefulShutdown.GracefulShutdownRequest;
34 import org.apache.directory.api.ldap.extras.extended.gracefulShutdown.GracefulShutdownRequestImpl;
35 import org.apache.directory.api.ldap.extras.extended.gracefulShutdown.GracefulShutdownResponse;
36 import org.apache.directory.api.ldap.extras.extended.gracefulShutdown.GracefulShutdownResponseImpl;
37 import org.apache.directory.api.ldap.model.message.ExtendedRequest;
38
39
40
41
42
43
44
45
46 public class GracefulShutdownFactory extends AbstractExtendedOperationFactory
47 {
48
49
50
51
52
53 public GracefulShutdownFactory( LdapApiService codec )
54 {
55 super( codec, GracefulShutdownRequest.EXTENSION_OID );
56 }
57
58
59
60
61
62 @Override
63 public String getOid()
64 {
65 return GracefulShutdownRequest.EXTENSION_OID;
66 }
67
68
69
70
71
72
73 @Override
74 public GracefulShutdownRequest newRequest()
75 {
76 GracefulShutdownRequest gracefulShutdownRequest = new GracefulShutdownRequestImpl();
77
78 return gracefulShutdownRequest;
79 }
80
81
82
83
84
85 @Override
86 public GracefulShutdownRequest newRequest( byte[] encodedValue ) throws DecoderException
87 {
88 GracefulShutdownRequest gracefulShutdownRequest = new GracefulShutdownRequestImpl();
89 decodeValue( gracefulShutdownRequest, encodedValue );
90
91 return gracefulShutdownRequest;
92 }
93
94
95
96
97
98 @Override
99 public GracefulShutdownResponse newResponse()
100 {
101 return new GracefulShutdownResponseImpl();
102 }
103
104
105
106
107
108 @Override
109 public void decodeValue( ExtendedRequest extendedRequest, byte[] requestValue ) throws DecoderException
110 {
111 ByteBuffer bb = ByteBuffer.wrap( requestValue );
112 GracefulShutdownRequestContainer container = new GracefulShutdownRequestContainer();
113 container.setGracefulShutdownRequest( ( GracefulShutdownRequest ) extendedRequest );
114 Asn1Decoder.decode( bb, container );
115 }
116
117
118
119
120
121 @Override
122 public void encodeValue( Asn1Buffer buffer, ExtendedRequest extendedRequest )
123 {
124 int start = buffer.getPos();
125 GracefulShutdownRequest gracefulShutdownRequest = ( GracefulShutdownRequest ) extendedRequest;
126
127
128 if ( gracefulShutdownRequest.getDelay() != 0 )
129 {
130 BerValue.encodeInteger( buffer,
131 ( byte ) GracefulActionConstants.GRACEFUL_ACTION_DELAY_TAG,
132 gracefulShutdownRequest.getDelay() );
133 }
134
135
136 if ( gracefulShutdownRequest.getTimeOffline() != 0 )
137 {
138 BerValue.encodeInteger( buffer, gracefulShutdownRequest.getTimeOffline() );
139 }
140
141
142 BerValue.encodeSequence( buffer, start );
143 }
144 }