Line data Source code
1 : /***************************************************************************** 2 : * 3 : * Project: WMS Client Driver 4 : * Purpose: Implementation of Dataset and RasterBand classes for WMS 5 : * and other similar services. 6 : * Author: Adam Nowacki, nowak@xpam.de 7 : * 8 : ****************************************************************************** 9 : * Copyright (c) 2007, Adam Nowacki 10 : * 11 : * SPDX-License-Identifier: MIT 12 : ****************************************************************************/ 13 : 14 : #ifndef GDALHTTP_H 15 : #define GDALHTTP_H 16 : 17 : #include "cpl_port.h" 18 : #include "cpl_http.h" 19 : 20 : struct WMSHTTPRequest 21 : { 22 59 : WMSHTTPRequest() = default; 23 : 24 : ~WMSHTTPRequest(); 25 : WMSHTTPRequest(const WMSHTTPRequest &) = delete; 26 : WMSHTTPRequest &operator=(const WMSHTTPRequest &) = delete; 27 : WMSHTTPRequest(WMSHTTPRequest &&) = delete; 28 : WMSHTTPRequest &operator=(WMSHTTPRequest &&) = delete; 29 : 30 : /* Input */ 31 : CPLString URL{}; 32 : // Not owned, do not release 33 : const char *const *options{nullptr}; 34 : CPLString Range{}; 35 : 36 : /* Output */ 37 : CPLString ContentType{}; 38 : CPLString Error{}; 39 : 40 : int nStatus = 41 : 0; /* 200 = success, 404 = not found, 0 = no response / error */ 42 : GByte *pabyData{nullptr}; 43 : size_t nDataLen{}; 44 : size_t nDataAlloc{}; 45 : 46 : /* curl internal stuff */ 47 : CURL *m_curl_handle{nullptr}; 48 : struct curl_slist *m_headers{nullptr}; 49 : // Which tile is being requested 50 : int x{}, y{}; 51 : 52 : // Space for error message, doesn't seem to be used by the multi-request 53 : // interface 54 : std::vector<char> m_curl_error{}; 55 : }; 56 : 57 : // Not public, only for use within WMS 58 : void WMSHTTPInitializeRequest(WMSHTTPRequest *psRequest); 59 : CPLErr WMSHTTPFetchMulti(WMSHTTPRequest *psRequest, int nRequestCount = 1); 60 : 61 : #endif /* GDALHTTP_H */