VirtualBox

source: vbox/trunk/src/libs/curl-8.7.1/lib/transfer.h@ 106165

最後變更 在這個檔案從106165是 104083,由 vboxsync 提交於 8 月 前

curl-8.7.1: Applied and adjusted our curl changes to 8.4.0. bugref:10639

  • 屬性 svn:eol-style 設為 native
檔案大小: 4.4 KB
 
1#ifndef HEADER_CURL_TRANSFER_H
2#define HEADER_CURL_TRANSFER_H
3/***************************************************************************
4 * _ _ ____ _
5 * Project ___| | | | _ \| |
6 * / __| | | | |_) | |
7 * | (__| |_| | _ <| |___
8 * \___|\___/|_| \_\_____|
9 *
10 * Copyright (C) Daniel Stenberg, <[email protected]>, 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.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 * SPDX-License-Identifier: curl
24 *
25 ***************************************************************************/
26
27#define Curl_headersep(x) ((((x)==':') || ((x)==';')))
28char *Curl_checkheaders(const struct Curl_easy *data,
29 const char *thisheader,
30 const size_t thislen);
31
32void Curl_init_CONNECT(struct Curl_easy *data);
33
34CURLcode Curl_pretransfer(struct Curl_easy *data);
35CURLcode Curl_posttransfer(struct Curl_easy *data);
36
37typedef enum {
38 FOLLOW_NONE, /* not used within the function, just a placeholder to
39 allow initing to this */
40 FOLLOW_FAKE, /* only records stuff, not actually following */
41 FOLLOW_RETRY, /* set if this is a request retry as opposed to a real
42 redirect following */
43 FOLLOW_REDIR /* a full true redirect */
44} followtype;
45
46CURLcode Curl_follow(struct Curl_easy *data, char *newurl,
47 followtype type);
48CURLcode Curl_readwrite(struct Curl_easy *data);
49int Curl_single_getsock(struct Curl_easy *data,
50 struct connectdata *conn, curl_socket_t *socks);
51CURLcode Curl_retry_request(struct Curl_easy *data, char **url);
52bool Curl_meets_timecondition(struct Curl_easy *data, time_t timeofdoc);
53
54/**
55 * Write the transfer raw response bytes, as received from the connection.
56 * Will handle all passed bytes or return an error. By default, this will
57 * write the bytes as BODY to the client. Protocols may provide a
58 * "write_resp" callback in their handler to add specific treatment. E.g.
59 * HTTP parses response headers and passes them differently to the client.
60 * @param data the transfer
61 * @param buf the raw response bytes
62 * @param blen the amount of bytes in `buf`
63 * @param is_eos TRUE iff the connection indicates this to be the last
64 * bytes of the response
65 * @param done on returnm, TRUE iff the response is complete
66 */
67CURLcode Curl_xfer_write_resp(struct Curl_easy *data,
68 char *buf, size_t blen,
69 bool is_eos);
70
71/* This sets up a forthcoming transfer */
72void Curl_xfer_setup(struct Curl_easy *data,
73 int sockindex, /* socket index to read from or -1 */
74 curl_off_t size, /* -1 if unknown at this point */
75 bool getheader, /* TRUE if header parsing is wanted */
76 int writesockindex /* socket index to write to. May be
77 the same we read from. -1
78 disables */
79 );
80
81/**
82 * Multi has set transfer to DONE. Last chance to trigger
83 * missing response things like writing an EOS to the client.
84 */
85CURLcode Curl_xfer_write_done(struct Curl_easy *data, bool premature);
86
87/**
88 * Send data on the socket/connection filter designated
89 * for transfer's outgoing data.
90 * Will return CURLE_OK on blocking with (*pnwritten == 0).
91 */
92CURLcode Curl_xfer_send(struct Curl_easy *data,
93 const void *buf, size_t blen,
94 size_t *pnwritten);
95
96/**
97 * Receive data on the socket/connection filter designated
98 * for transfer's incoming data.
99 * Will return CURLE_AGAIN on blocking with (*pnrcvd == 0).
100 */
101CURLcode Curl_xfer_recv(struct Curl_easy *data,
102 char *buf, size_t blen,
103 ssize_t *pnrcvd);
104
105CURLcode Curl_xfer_send_close(struct Curl_easy *data);
106
107#endif /* HEADER_CURL_TRANSFER_H */
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette