HTTP Progress Monitoring in C++
This blog post shows how to monitor the progress of HTTP uploads and downloads in C++. The first step is to create a C++ callback class that derives from the CkHttpProgress base class. You’ll be overriding one or more of the callback methods. For example:
class MyHttpProgress : public CkHttpProgress { public: MyHttpProgress(void) { } virtual ~MyHttpProgress(void) { } void PercentDone(int pctDone, bool *abort) { printf("PercentDone: %d percent\n",pctDone); // To abort the HTTP operation, set the abort flag equal to true. //if (pctDone > 10) //{ //*abort = true; //} } void AbortCheck(bool *abort) { // To abort the HTTP operation, set the abort flag equal to true. // Like this: // *abort = true; // Note: The AbortCheck event callback is called periodically according to the HeartbeatMs // property setting. printf("AbortCheck!\n"); } void HttpBeginReceive(void) { printf("HttpBeginReceive!\n"); } void HttpEndReceive(bool success) { printf("HttpEndReceive!\n"); } void HttpBeginSend(void) { printf("HttpBeginSend!\n"); } void HttpEndSend(bool success) { printf("HttpEndSend!\n"); } };
In your C++ application, create an instance of your MyHttpProgress class and tell the CkHttp object to use it by calling put_EventCallbackObject. Here’s an example:
void TestDownloadWithEventCallbacks(void) { MyHttpProgress eventObj; CkHttp http; bool success = http.UnlockComponent("Anything for 30-day trial"); http.put_EventCallbackObject(&eventObj); success = http.Download("http://www.chilkatsoft.com/something/something.zip","something.zip"); if (!success) { printf("%s\n",http.lastErrorText()); } else { printf("Finished.\n"); } }
admin
0
Tags :