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 :