PageRenderTime 50ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 0ms

/external/apache-http/src/org/apache/http/impl/client/DefaultConnectionKeepAliveStrategy.java

https://gitlab.com/brian0218/rk3288_r-box_android4.4.2_sdk
Java | 76 lines | 29 code | 4 blank | 43 comment | 6 complexity | 708afca80d0e7781322c00ebfa090680 MD5 | raw file
  1. /*
  2. * $HeadURL: $
  3. * $Revision: $
  4. * $Date: $
  5. *
  6. * ====================================================================
  7. * Licensed to the Apache Software Foundation (ASF) under one
  8. * or more contributor license agreements. See the NOTICE file
  9. * distributed with this work for additional information
  10. * regarding copyright ownership. The ASF licenses this file
  11. * to you under the Apache License, Version 2.0 (the
  12. * "License"); you may not use this file except in compliance
  13. * with the License. You may obtain a copy of the License at
  14. *
  15. * http://www.apache.org/licenses/LICENSE-2.0
  16. *
  17. * Unless required by applicable law or agreed to in writing,
  18. * software distributed under the License is distributed on an
  19. * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  20. * KIND, either express or implied. See the License for the
  21. * specific language governing permissions and limitations
  22. * under the License.
  23. * ====================================================================
  24. *
  25. * This software consists of voluntary contributions made by many
  26. * individuals on behalf of the Apache Software Foundation. For more
  27. * information on the Apache Software Foundation, please see
  28. * <http://www.apache.org/>.
  29. *
  30. */
  31. package org.apache.http.impl.client;
  32. import org.apache.http.HeaderElement;
  33. import org.apache.http.HeaderElementIterator;
  34. import org.apache.http.HttpResponse;
  35. import org.apache.http.conn.ConnectionKeepAliveStrategy;
  36. import org.apache.http.message.BasicHeaderElementIterator;
  37. import org.apache.http.protocol.HTTP;
  38. import org.apache.http.protocol.HttpContext;
  39. /**
  40. * Default implementation of a strategy deciding duration
  41. * that a connection can remain idle.
  42. *
  43. * The default implementation looks solely at the 'Keep-Alive'
  44. * header's timeout token.
  45. *
  46. * @author <a href="mailto:sberlin at gmail.com">Sam Berlin</a>
  47. *
  48. * @version $Revision: $
  49. *
  50. * @since 4.0
  51. */
  52. public class DefaultConnectionKeepAliveStrategy implements ConnectionKeepAliveStrategy {
  53. public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
  54. if (response == null) {
  55. throw new IllegalArgumentException("HTTP response may not be null");
  56. }
  57. HeaderElementIterator it = new BasicHeaderElementIterator(
  58. response.headerIterator(HTTP.CONN_KEEP_ALIVE));
  59. while (it.hasNext()) {
  60. HeaderElement he = it.nextElement();
  61. String param = he.getName();
  62. String value = he.getValue();
  63. if (value != null && param.equalsIgnoreCase("timeout")) {
  64. try {
  65. return Long.parseLong(value) * 1000;
  66. } catch(NumberFormatException ignore) {
  67. }
  68. }
  69. }
  70. return -1;
  71. }
  72. }