1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
#pragma once
#include <drogon/HttpController.h>
using namespace drogon;
class RangeTestController : public drogon::HttpController<RangeTestController>
{
public:
METHOD_LIST_BEGIN
// path is /RangeTestController
METHOD_ADD(RangeTestController::getFile, "/", Get);
// path is /RangeTestController/{offset}/{length}
METHOD_ADD(RangeTestController::getFileByRange, "/{offset}/{length}", Get);
METHOD_LIST_END
RangeTestController();
void getFile(const HttpRequestPtr &req,
std::function<void(const HttpResponsePtr &)> &&callback) const;
// We do not provide 'Range' header decoding, simply use path as range
// parameter.
void getFileByRange(const HttpRequestPtr &req,
std::function<void(const HttpResponsePtr &)> &&callback,
size_t offset,
size_t length) const;
static size_t getFileSize()
{
return fileSize_;
}
private:
static size_t fileSize_;
};
|