MCPcopy Create free account
hub / github.com/beefytech/Beef / WriteMemoryCallback

Function WriteMemoryCallback

IDEHelper/NetManager.cpp:24–80  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

22}
23
24static size_t WriteMemoryCallback(void* contents, size_t size, size_t nmemb, void* userp)
25{
26 NetRequest* netRequest = (NetRequest*)userp;
27
28 long response_code = 0;
29 curl_easy_getinfo(netRequest->mCURL, CURLINFO_RESPONSE_CODE, &response_code);
30
31 if (netRequest->mCancelling)
32 {
33 netRequest->mFailed = true;
34 return 0;
35 }
36
37 if (response_code != 200)
38 return 0;
39
40 if (netRequest->mFailed)
41 return 0;
42
43 if (!netRequest->mOutFile.IsOpen())
44 {
45 RecursiveCreateDirectory(GetFileDir(netRequest->mOutPath));
46 if (!netRequest->mOutFile.Open(netRequest->mOutTempPath, BfpFileCreateKind_CreateAlways, BfpFileCreateFlag_Write))
47 {
48 netRequest->Fail(StrFormat("Failed to create file '%s'", netRequest->mOutTempPath.c_str()));
49 return 0;
50 }
51 }
52
53 uint32 tickNow = BFTickCount();
54
55 if (tickNow - netRequest->mLastUpdateTick >= 500)
56 {
57 curl_off_t downloadSize = 0;
58 curl_easy_getinfo(netRequest->mCURL, CURLINFO_SIZE_DOWNLOAD_T, &downloadSize);
59 curl_off_t length = 0;
60 curl_easy_getinfo(netRequest->mCURL, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, &length);
61
62 if (netRequest->mShowTracking)
63 {
64 String msg = StrFormat("symsrv Getting '%s' - %dk", netRequest->mURL.c_str(), (int)(downloadSize / 1024));
65
66 if (length > 0)
67 {
68 msg += StrFormat(" (%d%%)", (int)(downloadSize * 100 / length));
69 }
70
71 netRequest->mNetManager->mDebugManager->OutputRawMessage(msg);
72 }
73
74 netRequest->mLastUpdateTick = tickNow;
75 }
76
77 size_t realsize = size * nmemb;
78 netRequest->mOutFile.Write(contents, (int)realsize);
79 return realsize;
80}
81

Callers

nothing calls this directly

Calls 6

IsOpenMethod · 0.45
OpenMethod · 0.45
FailMethod · 0.45
c_strMethod · 0.45
OutputRawMessageMethod · 0.45
WriteMethod · 0.45

Tested by

no test coverage detected