001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 */ 019 package org.apache.directory.server.protocol.shared; 020 021 022 import org.apache.directory.server.core.DirectoryService; 023 import org.apache.directory.server.protocol.shared.transport.Transport; 024 import org.apache.mina.transport.socket.DatagramAcceptor; 025 import org.apache.mina.transport.socket.SocketAcceptor; 026 027 028 /** 029 * Minimum functionality required by an ApacheDS protocol service. 030 * 031 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> 032 * @version $Rev$, $Date$ 033 */ 034 public interface ProtocolService 035 { 036 /** 037 * Stops this ProtocolService which unbinds acceptors on the protocol port. 038 * 039 * @throws Exception if there are problems stopping this service 040 */ 041 void stop() throws Exception; 042 043 044 /** 045 * Starts this ProtocolService which binds acceptors on the protocol port. 046 * 047 * @throws Exception if there are problems starting this service 048 */ 049 void start() throws Exception; 050 051 052 /** 053 * Gets whether or not this service has been started. 054 * 055 * @return true if the service has started, false otherwise 056 */ 057 boolean isStarted(); 058 059 060 /** 061 * If this protocol service supports UDP transport then this gets the 062 * non-null MINA DatagramAcceptor it uses. 063 * 064 * @return the MINA DatagramAcceptor used for UDP transports 065 */ 066 DatagramAcceptor getDatagramAcceptor( Transport transport ); 067 068 069 /** 070 * If this protocol service support TCP transport then this gets the 071 * MINA SocketAcceptor it uses. 072 * 073 * @return the MINA SocketAcceptor used for TCP transport 074 */ 075 SocketAcceptor getSocketAcceptor( Transport transport ); 076 077 078 /** 079 * Services can be enabled or disabled. If enabled they will be started, if 080 * not they will not. 081 * 082 * @return true if this service is to be started, false otherwise 083 */ 084 boolean isEnabled(); 085 086 087 /** 088 * Sets whether or not this ProtocolService is enabled. 089 * 090 * @param enabled true to enable, false to disable 091 */ 092 void setEnabled( boolean enabled ); 093 094 095 /** 096 * Gets the instance identifier for this ProtocolService. 097 * 098 * @return the identifier for the service instance 099 */ 100 String getServiceId(); 101 102 103 /** 104 * Sets the instance identifier for this ProtocolService. 105 * 106 * @param serviceId an identifier for the service instance 107 */ 108 void setServiceId( String serviceId ); 109 110 111 /** 112 * Gets a descriptive name for the kind of service this represents. 113 * This name is constant across instances of this ProtocolService. 114 * 115 * @return a descriptive name for the kind of this service 116 */ 117 String getServiceName(); 118 119 120 /** 121 * Sets the descriptive name for the kind of service this represents. 122 * This name is constant across instances of this ProtocolService. 123 * 124 * @param name a descriptive name for the kind of this service 125 */ 126 void setServiceName( String name ); 127 128 129 /** 130 * Gets the DirectoryService assigned to this ProtocolService. 131 * 132 * @return the directory service core assigned to this service 133 */ 134 DirectoryService getDirectoryService(); 135 136 137 /** 138 * Sets the DirectoryService assigned to this ProtocolService. 139 * 140 * @param directoryService the directory service core assigned to this service 141 */ 142 void setDirectoryService( DirectoryService directoryService ); 143 }