conncache.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #ifndef HEADER_CURL_CONNCACHE_H
  2. #define HEADER_CURL_CONNCACHE_H
  3. /***************************************************************************
  4. * _ _ ____ _
  5. * Project ___| | | | _ \| |
  6. * / __| | | | |_) | |
  7. * | (__| |_| | _ <| |___
  8. * \___|\___/|_| \_\_____|
  9. *
  10. * Copyright (C) 2015, Daniel Stenberg, <[email protected]>, et al.
  11. * Copyright (C) 2012 - 2014, Linus Nielsen Feltzing, <[email protected]>
  12. *
  13. * This software is licensed as described in the file COPYING, which
  14. * you should have received as part of this distribution. The terms
  15. * are also available at https://curl.haxx.se/docs/copyright.html.
  16. *
  17. * You may opt to use, copy, modify, merge, publish, distribute and/or sell
  18. * copies of the Software, and permit persons to whom the Software is
  19. * furnished to do so, under the terms of the COPYING file.
  20. *
  21. * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  22. * KIND, either express or implied.
  23. *
  24. ***************************************************************************/
  25. struct conncache {
  26. struct curl_hash hash;
  27. size_t num_connections;
  28. long next_connection_id;
  29. struct timeval last_cleanup;
  30. };
  31. #define BUNDLE_NO_MULTIUSE -1
  32. #define BUNDLE_UNKNOWN 0 /* initial value */
  33. #define BUNDLE_PIPELINING 1
  34. #define BUNDLE_MULTIPLEX 2
  35. struct connectbundle {
  36. int multiuse; /* supports multi-use */
  37. size_t num_connections; /* Number of connections in the bundle */
  38. struct curl_llist *conn_list; /* The connectdata members of the bundle */
  39. };
  40. int Curl_conncache_init(struct conncache *, int size);
  41. void Curl_conncache_destroy(struct conncache *connc);
  42. /* return the correct bundle, to a host or a proxy */
  43. struct connectbundle *Curl_conncache_find_bundle(struct connectdata *conn,
  44. struct conncache *connc);
  45. CURLcode Curl_conncache_add_conn(struct conncache *connc,
  46. struct connectdata *conn);
  47. void Curl_conncache_remove_conn(struct conncache *connc,
  48. struct connectdata *conn);
  49. void Curl_conncache_foreach(struct conncache *connc,
  50. void *param,
  51. int (*func)(struct connectdata *conn,
  52. void *param));
  53. struct connectdata *
  54. Curl_conncache_find_first_connection(struct conncache *connc);
  55. void Curl_conncache_print(struct conncache *connc);
  56. #endif /* HEADER_CURL_CONNCACHE_H */