blob: 59dd1234270217b15918c2d960233d1509bb821f [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.asyncweb.server;
import java.util.List;
import org.apache.asyncweb.server.context.KeepAliveStrategy;
import org.apache.asyncweb.server.errorReporting.ErrorResponseFormatter;
import org.apache.asyncweb.server.session.HttpSessionAccessor;
public interface ServiceContainer {
/**
* Adds a {@link HttpServiceFilter} to this container.
* Requests dispatched to this container are run through filters
* in the order they are added
*
* @param handler The handler to add
* @throws IllegalStateException If this container has been started
*/
void addServiceFilter(HttpServiceFilter handler);
/**
* Adds a <code>Transport</code> to this container.
* The transport is provided with a <code></code>, and is started
* when this container starts
*
* @param transport The transport to add
* @throws IllegalStateException If this container has been started
*/
void addTransport(Transport transport);
/**
* Returns the read-only {@link List} of {@link HttpServiceFilter}s.
*/
List<HttpServiceFilter> getServiceFilters();
/**
* Returns the employed {@link KeepAliveStrategy} of this container.
*/
KeepAliveStrategy getKeepAliveStrategy();
/**
* Returns the employes {@link HttpSessionAccessor} to be supplied to each request
* as it passes through the container.
* The accessor is shutdown when this container is stopped
*/
HttpSessionAccessor getSessionAccessor();
/**
* Sets the <code>SessionAccessor</code> to be supplied to each request
* as it passes through the container.
* The accessor is shutdown when this container is stopped
*
* @param sessionAccessor The accessor
*/
void setSessionAccessor( HttpSessionAccessor accessor);
ErrorResponseFormatter getErrorResponseFormatter();
boolean isSendServerHeader();
/**
* Starts this container.
* Requests may be dispatched to this container after it has been
* started.
* During start-up, this container starts all associated transports
* and service handlers.
*
* @throws ContainerLifecycleException If a transport fails to start
*/
void start() throws ContainerLifecycleException;
/**
* Stops this container.
* During shut-down, this container stops all associated transports
* and service handlers.
*/
void stop();
}