libcurl-share.html 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <html><head>
  2. <title>libcurl-share man page</title>
  3. <meta name="generator" content="roffit 0.5">
  4. <STYLE type="text/css">
  5. P.level0 {
  6. padding-left: 2em;
  7. }
  8. P.level1 {
  9. padding-left: 4em;
  10. }
  11. P.level2 {
  12. padding-left: 6em;
  13. }
  14. span.emphasis {
  15. font-style: italic;
  16. }
  17. span.bold {
  18. font-weight: bold;
  19. }
  20. span.manpage {
  21. font-weight: bold;
  22. }
  23. h2.nroffsh {
  24. background-color: #e0e0e0;
  25. }
  26. span.nroffip {
  27. font-weight: bold;
  28. font-size: 120%;
  29. font-family: monospace;
  30. }
  31. p.roffit {
  32. text-align: center;
  33. font-size: 80%;
  34. }
  35. </STYLE>
  36. </head><body>
  37. <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
  38. <p class="level0">libcurl-share - how to use the share interface <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
  39. <p class="level0">This is an overview on how to use the libcurl share interface in your C programs. There are specific man pages for each function mentioned in here.
  40. <p class="level0">All functions in the share interface are prefixed with curl_share.
  41. <p class="level0"><a name="OBJECTIVES"></a><h2 class="nroffsh">OBJECTIVES</h2>
  42. <p class="level0">The share interface was added to enable sharing of data between curl &zerosp;"handles". <a name="ONE"></a><h2 class="nroffsh">ONE SET OF DATA - MANY TRANSFERS</h2>
  43. <p class="level0">You can have multiple easy handles share data between them. Have them update and use the <span Class="bold">same</span> cookie database or DNS cache! This way, each single transfer will take advantage from data updates made by the other transfer(s). <a name="SHARE"></a><h2 class="nroffsh">SHARE OBJECT</h2>
  44. <p class="level0">You create a shared object with <a class="emphasis" href="./curl_share_init.html">curl_share_init(3)</a>. It returns a handle for a newly created one.
  45. <p class="level0">You tell the shared object what data you want it to share by using <a class="emphasis" href="./curl_share_setopt.html">curl_share_setopt(3)</a>. Currently you can only share DNS and/or COOKIE data.
  46. <p class="level0">Since you can use this share from multiple threads, and libcurl has no internal thread synchronization, you must provide mutex callbacks if you're using this multi-threaded. You set lock and unlock functions with <a class="emphasis" href="./curl_share_setopt.html">curl_share_setopt(3)</a> too.
  47. <p class="level0">Then, you make an easy handle to use this share, you set the <span Class="emphasis">CURLOPT_SHARE</span> option with <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a>, and pass in share handle. You can make any number of easy handles share the same share handle.
  48. <p class="level0">To make an easy handle stop using that particular share, you set <span Class="emphasis">CURLOPT_SHARE</span> to NULL for that easy handle. To make a handle stop sharing a particular data, you can <span Class="emphasis">CURLSHOPT_UNSHARE</span> it.
  49. <p class="level0">When you're done using the share, make sure that no easy handle is still using it, and call <a class="emphasis" href="./curl_share_cleanup.html">curl_share_cleanup(3)</a> on the handle. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
  50. <p class="level0"><a class="manpage" href="./curl_share_init.html">curl_share_init (3)</a> <a class="manpage" href="./curl_share_setopt.html"> curl_share_setopt (3)</a> <a class="manpage" href="./curl_share_cleanup.html"> curl_share_cleanup (3)</a> <p class="roffit">
  51. This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
  52. </body></html>