blob: 6fa9c4147cfaa3001e4b754299b81d28a2feaae0 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.directory.server.protocol.shared;
import java.util.HashSet;
import java.util.Set;
import org.apache.directory.server.protocol.shared.transport.Transport;
import org.apache.mina.transport.socket.DatagramAcceptor;
import org.apache.mina.transport.socket.SocketAcceptor;
/**
* An abstract base class for a ProtocolService. The start/stop methods have
* not been implemented.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
public abstract class AbstractProtocolService implements ProtocolService
{
/** A flag set to indicate if the server is started or not */
private boolean started;
/** A flag set to tell if the server is enabled or not */
private boolean enabled;
/** The server ID */
private String serviceId;
/** The service name */
private String serviceName;
/** The service transports. We may have more than one */
protected Set<Transport> transports = new HashSet<>();
/**
* {@inheritDoc}
*/
public boolean isStarted()
{
return started;
}
/**
* @param started The state of this server
*/
protected void setStarted( boolean started )
{
this.started = started;
}
/**
* {@inheritDoc}
*/
public boolean isEnabled()
{
return enabled;
}
/**
* {@inheritDoc}
*/
public void setEnabled( boolean enabled )
{
this.enabled = enabled;
}
/**
* {@inheritDoc}
*/
public String getServiceId()
{
return serviceId;
}
/**
* {@inheritDoc}
*/
public void setServiceId( String serviceId )
{
this.serviceId = serviceId;
}
/**
* {@inheritDoc}
*/
public String getServiceName()
{
return serviceName;
}
/**
* {@inheritDoc}
*/
public void setServiceName( String name )
{
this.serviceName = name;
}
/**
* @return the transport
*/
public Transport[] getTransports()
{
return transports.toArray( new Transport[]
{} );
}
/**
* Set the underlying transports
* @param transports The transports
*/
public void setTransports( Transport... transports )
{
for ( Transport transport : transports )
{
this.transports.add( transport );
if ( transport.getAcceptor() == null )
{
transport.init();
}
}
}
/**
* Add underlying transports
* @param transports The transports
*/
public void addTransports( Transport... transports )
{
for ( Transport transport : transports )
{
this.transports.add( transport );
if ( transport.getAcceptor() == null )
{
transport.init();
}
}
}
/**
* {@inheritDoc}
*/
public DatagramAcceptor getDatagramAcceptor( Transport udpTransport )
{
return ( DatagramAcceptor ) udpTransport.getAcceptor();
}
/**
* {@inheritDoc}
*/
public SocketAcceptor getSocketAcceptor( Transport tcpTransport )
{
return ( SocketAcceptor ) tcpTransport.getAcceptor();
}
}