Mercurial > hgrepos > Python2 > PyMuPDF
comparison mupdf-source/thirdparty/curl/lib/multihandle.h @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1:1d09e1dec1d9 | 2:b50eed0cc0ef |
|---|---|
| 1 #ifndef HEADER_CURL_MULTIHANDLE_H | |
| 2 #define HEADER_CURL_MULTIHANDLE_H | |
| 3 /*************************************************************************** | |
| 4 * _ _ ____ _ | |
| 5 * Project ___| | | | _ \| | | |
| 6 * / __| | | | |_) | | | |
| 7 * | (__| |_| | _ <| |___ | |
| 8 * \___|\___/|_| \_\_____| | |
| 9 * | |
| 10 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. | |
| 11 * | |
| 12 * This software is licensed as described in the file COPYING, which | |
| 13 * you should have received as part of this distribution. The terms | |
| 14 * are also available at https://curl.haxx.se/docs/copyright.html. | |
| 15 * | |
| 16 * You may opt to use, copy, modify, merge, publish, distribute and/or sell | |
| 17 * copies of the Software, and permit persons to whom the Software is | |
| 18 * furnished to do so, under the terms of the COPYING file. | |
| 19 * | |
| 20 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | |
| 21 * KIND, either express or implied. | |
| 22 * | |
| 23 ***************************************************************************/ | |
| 24 | |
| 25 #include "conncache.h" | |
| 26 #include "psl.h" | |
| 27 | |
| 28 struct Curl_message { | |
| 29 struct curl_llist_element list; | |
| 30 /* the 'CURLMsg' is the part that is visible to the external user */ | |
| 31 struct CURLMsg extmsg; | |
| 32 }; | |
| 33 | |
| 34 /* NOTE: if you add a state here, add the name to the statename[] array as | |
| 35 well! | |
| 36 */ | |
| 37 typedef enum { | |
| 38 CURLM_STATE_INIT, /* 0 - start in this state */ | |
| 39 CURLM_STATE_CONNECT_PEND, /* 1 - no connections, waiting for one */ | |
| 40 CURLM_STATE_CONNECT, /* 2 - resolve/connect has been sent off */ | |
| 41 CURLM_STATE_WAITRESOLVE, /* 3 - awaiting the resolve to finalize */ | |
| 42 CURLM_STATE_WAITCONNECT, /* 4 - awaiting the TCP connect to finalize */ | |
| 43 CURLM_STATE_WAITPROXYCONNECT, /* 5 - awaiting HTTPS proxy SSL initialization | |
| 44 to complete and/or proxy CONNECT to | |
| 45 finalize */ | |
| 46 CURLM_STATE_SENDPROTOCONNECT, /* 6 - initiate protocol connect procedure */ | |
| 47 CURLM_STATE_PROTOCONNECT, /* 7 - completing the protocol-specific connect | |
| 48 phase */ | |
| 49 CURLM_STATE_DO, /* 8 - start send off the request (part 1) */ | |
| 50 CURLM_STATE_DOING, /* 9 - sending off the request (part 1) */ | |
| 51 CURLM_STATE_DO_MORE, /* 10 - send off the request (part 2) */ | |
| 52 CURLM_STATE_DO_DONE, /* 11 - done sending off request */ | |
| 53 CURLM_STATE_PERFORM, /* 12 - transfer data */ | |
| 54 CURLM_STATE_TOOFAST, /* 13 - wait because limit-rate exceeded */ | |
| 55 CURLM_STATE_DONE, /* 14 - post data transfer operation */ | |
| 56 CURLM_STATE_COMPLETED, /* 15 - operation complete */ | |
| 57 CURLM_STATE_MSGSENT, /* 16 - the operation complete message is sent */ | |
| 58 CURLM_STATE_LAST /* 17 - not a true state, never use this */ | |
| 59 } CURLMstate; | |
| 60 | |
| 61 /* we support N sockets per easy handle. Set the corresponding bit to what | |
| 62 action we should wait for */ | |
| 63 #define MAX_SOCKSPEREASYHANDLE 5 | |
| 64 #define GETSOCK_READABLE (0x00ff) | |
| 65 #define GETSOCK_WRITABLE (0xff00) | |
| 66 | |
| 67 #define CURLPIPE_ANY (CURLPIPE_MULTIPLEX) | |
| 68 | |
| 69 /* This is the struct known as CURLM on the outside */ | |
| 70 struct Curl_multi { | |
| 71 /* First a simple identifier to easier detect if a user mix up | |
| 72 this multi handle with an easy handle. Set this to CURL_MULTI_HANDLE. */ | |
| 73 long type; | |
| 74 | |
| 75 /* We have a doubly-linked circular list with easy handles */ | |
| 76 struct Curl_easy *easyp; | |
| 77 struct Curl_easy *easylp; /* last node */ | |
| 78 | |
| 79 int num_easy; /* amount of entries in the linked list above. */ | |
| 80 int num_alive; /* amount of easy handles that are added but have not yet | |
| 81 reached COMPLETE state */ | |
| 82 | |
| 83 struct curl_llist msglist; /* a list of messages from completed transfers */ | |
| 84 | |
| 85 struct curl_llist pending; /* Curl_easys that are in the | |
| 86 CURLM_STATE_CONNECT_PEND state */ | |
| 87 | |
| 88 /* callback function and user data pointer for the *socket() API */ | |
| 89 curl_socket_callback socket_cb; | |
| 90 void *socket_userp; | |
| 91 | |
| 92 /* callback function and user data pointer for server push */ | |
| 93 curl_push_callback push_cb; | |
| 94 void *push_userp; | |
| 95 | |
| 96 /* Hostname cache */ | |
| 97 struct curl_hash hostcache; | |
| 98 | |
| 99 #ifdef USE_LIBPSL | |
| 100 /* PSL cache. */ | |
| 101 struct PslCache psl; | |
| 102 #endif | |
| 103 | |
| 104 /* timetree points to the splay-tree of time nodes to figure out expire | |
| 105 times of all currently set timers */ | |
| 106 struct Curl_tree *timetree; | |
| 107 | |
| 108 /* 'sockhash' is the lookup hash for socket descriptor => easy handles (note | |
| 109 the pluralis form, there can be more than one easy handle waiting on the | |
| 110 same actual socket) */ | |
| 111 struct curl_hash sockhash; | |
| 112 | |
| 113 /* multiplexing wanted */ | |
| 114 bool multiplexing; | |
| 115 | |
| 116 bool recheckstate; /* see Curl_multi_connchanged */ | |
| 117 | |
| 118 /* Shared connection cache (bundles)*/ | |
| 119 struct conncache conn_cache; | |
| 120 | |
| 121 long maxconnects; /* if >0, a fixed limit of the maximum number of entries | |
| 122 we're allowed to grow the connection cache to */ | |
| 123 | |
| 124 long max_host_connections; /* if >0, a fixed limit of the maximum number | |
| 125 of connections per host */ | |
| 126 | |
| 127 long max_total_connections; /* if >0, a fixed limit of the maximum number | |
| 128 of connections in total */ | |
| 129 | |
| 130 /* timer callback and user data pointer for the *socket() API */ | |
| 131 curl_multi_timer_callback timer_cb; | |
| 132 void *timer_userp; | |
| 133 struct curltime timer_lastcall; /* the fixed time for the timeout for the | |
| 134 previous callback */ | |
| 135 bool in_callback; /* true while executing a callback */ | |
| 136 }; | |
| 137 | |
| 138 #endif /* HEADER_CURL_MULTIHANDLE_H */ |
