View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  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,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.directory.server.protocol.shared;
20  
21  
22  import org.apache.directory.server.core.DirectoryService;
23  
24  import java.util.Set;
25  
26  
27  /**
28   * Minimum functionality required by an ApacheDS protocol service.
29   *
30   * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
31   * @version $Rev$, $Date$
32   */
33  public interface ProtocolService
34  {
35      /**
36       * Stops this ProtocolService which unbinds acceptors on the protocol port.
37       *
38       * @throws Exception if there are problems stopping this service
39       */
40      void stop() throws Exception;
41  
42  
43      /**
44       * Starts this ProtocolService which binds acceptors on the protocol port.
45       *
46       * @throws Exception if there are problems starting this service
47       */
48      void start() throws Exception;
49  
50  
51      /**
52       * Gets whether or not this service has been started.
53       *
54       * @return true if the service has started, false otherwise
55       */
56      boolean isStarted();
57  
58  
59      /**
60       * If this protocol service supports UDP transport then this gets the
61       * non-null MINA DatagramAcceptor it uses.
62       *
63       * @return the MINA DatagramAcceptor used for UDP transports
64       */
65      DatagramAcceptor getDatagramAcceptor();
66  
67  
68      /**
69       * If this protocol service supports UDP transport then this sets the
70       * MINA DatagramAcceptor it uses.
71       *
72       * @param datagramAcceptor the MINA DatagramAcceptor used for UDP transport
73       */
74      void setDatagramAcceptor( DatagramAcceptor datagramAcceptor );
75  
76  
77      /**
78       * If this protocol service support TCP transport then this gets the
79       * MINA SocketAcceptor it uses.
80       *
81       * @return the MINA SocketAcceptor used for TCP transport
82       */
83      SocketAcceptor getSocketAcceptor();
84  
85  
86      /**
87       * If this protocol service support TCP transport then this sets the
88       * MINA SocketAcceptor it uses.
89       *
90       * @param socketAcceptor the MINA SocketAcceptor used for TCP transport
91       */
92      void setSocketAcceptor( SocketAcceptor socketAcceptor );
93  
94  
95      /**
96       * Services can be enabled or disabled. If enabled they will be started, if
97       * not they will not.
98       *
99       * @return true if this service is to be started, false otherwise
100      */
101     boolean isEnabled();
102 
103 
104     /**
105      * Sets whether or not this ProtocolService is enabled.
106      *
107      * @param enabled true to enable, false to disable
108      */
109     void setEnabled( boolean enabled );
110 
111 
112     /**
113      * Gets the instance identifier for this ProtocolService.
114      *
115      * @return the identifier for the service instance
116      */
117     String getServiceId();
118 
119 
120     /**
121      * Sets the instance identifier for this ProtocolService.
122      *
123      * @param serviceId an identifier for the service instance
124      */
125     void setServiceId( String serviceId );
126 
127 
128     /**
129      * Gets a descriptive name for the kind of service this represents.
130      * This name is constant across instances of this ProtocolService.
131      *
132      * @return a descriptive name for the kind of this service
133      */
134     String getServiceName();
135 
136 
137     /**
138      * Sets the descriptive name for the kind of service this represents.
139      * This name is constant across instances of this ProtocolService.
140      * 
141      * @param name a descriptive name for the kind of this service
142      */
143     void setServiceName( String name );
144 
145 
146     /**
147      * Gets the IP address of this service.
148      *
149      * @return the IP address for this service.
150      */
151     String getIpAddress();
152 
153 
154     /**
155      * Gets the IP address of this service.
156      *
157      * @param ipAddress the Internet Protocol address for this service.
158      */
159     void setIpAddress( String ipAddress );
160 
161 
162     /**
163      * Gets the IP port for this service.
164      *
165      * @return the IP port for this service
166      */
167     int getIpPort();
168 
169 
170     /**
171      * Sets the IP port for this service.
172      *
173      * @param ipPort the ip port for this service
174      * @throws IllegalArgumentException if the port number is not within a valid range
175      */
176     void setIpPort( int ipPort );
177 
178 
179     /**
180      * Gets the transport protocols used by this service. At this point services
181      * which support more than one transport are configured to bind to that transport
182      * on the same port.
183      *
184      * @return the transport protocols used by this service
185      */
186     Set<TransportProtocol> getTransportProtocols();
187 
188 
189     /**
190      * Sets the transport protocols used by this service.
191      *
192      * @param transportProtocols the transport protocols to be used by this service
193      */
194     void setTransportProtocols( Set<TransportProtocol> transportProtocols );
195 
196 
197     /**
198      * Gets the DirectoryService assigned to this ProtocolService.
199      *
200      * @return the directory service core assigned to this service
201      */
202     DirectoryService getDirectoryService();
203 
204 
205     /**
206      * Sets the DirectoryService assigned to this ProtocolService.
207      *
208      * @param directoryService the directory service core assigned to this service
209      */
210     void setDirectoryService( DirectoryService directoryService );
211 }