![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java JavaScript Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Unicode C++) Impossible Execution PlanSee more CURL ExamplesThis example demonstrates what happens when it is not possible to construct an execution plan due to missing dependencies. The target When When This example highlights that for an execution plan to be valid, every required input must either:
If neither condition is met, the system correctly detects the unresolved dependency and prevents execution. Note: This example requires Chilkat v11.5.0 or greater. For more information, see https://www.chilkatsoft.com/curl_dependency_engine.asp
#include <CkHttpCurlW.h> #include <CkJsonObjectW.h> void ChilkatSample(void) { bool success = false; success = false; CkHttpCurlW httpCurl; // This target curl command requires {{drive_id}}. const wchar_t *targetCurl = L"curl -X GET https://graph.microsoft.com/v1.0/drives/{{drive_id}}/root/children"; // Define a helper function that can produce site_id. // However, it does NOT produce drive_id. const wchar_t *fnName = L"getSite"; httpCurl.AddFunction(fnName,L"curl -X GET https://graph.microsoft.com/v1.0/sites/root:/sites/{{site_name}}"); httpCurl.AddOutput(fnName,L"id",L"site_id"); // Provide site_name, so getSite can run. httpCurl.SetVar(L"site_name",L"test"); // Try to examine the execution plan. // This fails because {{drive_id}} is required by the target curl command, // but drive_id is not already known and no defined function produces it. CkJsonObjectW planJson; planJson.put_EmitCompact(false); success = httpCurl.ExaminePlan(targetCurl,planJson); if (success == false) { // Should equal 5. wprintf(L"ExaminePlan fail reason = %d\n",httpCurl.get_FailReason()); // Examine the error(s) returned in planJson wprintf(L"%s\n",planJson.emit()); // Expected output: // { // "errors": [{ // "variable": "drive_id", // "msg": "No candidate functions" // }] // } } // DoYourThing will fail for the same reason. success = httpCurl.DoYourThing(targetCurl); // We expect DoYourThing to fail because it is not possible to construct // a valid execution plan (drive_id cannot be resolved). if (success == false) { // FailReason provides a numeric code indicating why the operation failed. // A value of 5 specifically means that an execution plan could not be created // due to unresolved dependencies (i.e., a required variable has no source). wprintf(L"DoYourThing fail reason = %d\n",httpCurl.get_FailReason()); } else { // If execution succeeds, it means the plan was somehow resolved, // which would be unexpected in this scenario. wprintf(L"Unexpected success.\n"); } } |
||||||
© 2000-2026 Chilkat Software, Inc. All Rights Reserved.