HttpRequestRetryHandler.java revision 417f3b92ba4549b2f22340e3107d869d2b9c5bb8
123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)/*
223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/HttpRequestRetryHandler.java $
323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * $Revision: 535610 $
423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * $Date: 2007-05-06 06:28:13 -0700 (Sun, 06 May 2007) $
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci *
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * ====================================================================
723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * Licensed to the Apache Software Foundation (ASF) under one
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * or more contributor license agreements.  See the NOTICE file
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * distributed with this work for additional information
1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * regarding copyright ownership.  The ASF licenses this file
1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * to you under the Apache License, Version 2.0 (the
1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * "License"); you may not use this file except in compliance
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * with the License.  You may obtain a copy of the License at
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci *
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci *   http://www.apache.org/licenses/LICENSE-2.0
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci *
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * Unless required by applicable law or agreed to in writing,
180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * software distributed under the License is distributed on an
1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * KIND, either express or implied.  See the License for the
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * specific language governing permissions and limitations
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * under the License.
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch * ====================================================================
2423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) *
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * This software consists of voluntary contributions made by many
2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * individuals on behalf of the Apache Software Foundation.  For more
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * information on the Apache Software Foundation, please see
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * <http://www.apache.org/>.
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci *
3023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) */
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccipackage org.apache.http.client;
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport java.io.IOException;
3523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
3623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)import org.apache.http.protocol.HttpContext;
3723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
3823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)/**
3923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * A handler for determining if an HttpRequest should be retried after a
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * recoverable exception during execution.
4123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) *
4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * <p>
4323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * Classes implementing this interface must synchronize access to shared
4423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * data as methods of this interfrace may be executed from multiple threads
4523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * </p>
4623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) *
4723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) * @author Michael Becke
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
4923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) */
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccipublic interface HttpRequestRetryHandler {
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    /**
5323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)     * Determines if a method should be retried after an IOException
5423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)     * occurs during execution.
5523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)     *
5623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)     * @param exception the exception that occurred
5723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)     * @param executionCount the number of times this method has been
5823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)     * unsuccessfully executed
5923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)     * @param context the context for the request execution
6023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)     *
6123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)     * @return <code>true</code> if the method should be retried, <code>false</code>
6223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)     * otherwise
6323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)     */
641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    boolean retryRequest(IOException exception, int executionCount, HttpContext context);
65
66}
67