| 127 | void fillRequest(HTTPRequest& req); |
| 128 | |
| 129 | class HTTPTask { |
| 130 | public: |
| 131 | HTTPTask(HTTPReply& r, bool noBody); |
| 132 | HTTPTask(const HTTPTask& t); |
| 133 | |
| 134 | virtual ~HTTPTask(void) {}; |
| 135 | |
| 136 | void generateBody(HTTPReply& r, bool noBody); |
| 137 | |
| 138 | bool update(int connectionID); |
| 139 | |
| 140 | // std::string page; |
| 141 | size_t pos; |
| 142 | |
| 143 | // a binary data management class |
| 144 | class PageBuffer { |
| 145 | public: |
| 146 | virtual ~PageBuffer() {if (data) { free(data); }} |
| 147 | PageBuffer() : bufferSize(0), data(NULL) {}; |
| 148 | |
| 149 | PageBuffer(const char* str) { |
| 150 | bufferSize = strlen(str); |
| 151 | data = (char*)malloc(bufferSize); |
| 152 | memcpy(data, str, bufferSize); |
| 153 | } |
| 154 | |
| 155 | PageBuffer(const std::string& r) { |
| 156 | bufferSize = r.size(); |
| 157 | data = (char*)malloc(bufferSize); |
| 158 | memcpy(data, r.c_str(), bufferSize); |
| 159 | } |
| 160 | |
| 161 | PageBuffer(const PageBuffer& r) { |
| 162 | bufferSize = r.size(); |
| 163 | data = (char*)malloc(bufferSize); |
| 164 | memcpy(data, r.data, bufferSize); |
| 165 | } |
| 166 | |
| 167 | size_t append(const char* newData, size_t newSize) { |
| 168 | if (!data) { |
| 169 | data = (char*)malloc(newSize); |
| 170 | memcpy(data, newData, newSize); |
| 171 | bufferSize = newSize; |
| 172 | } |
| 173 | else { |
| 174 | char* p = (char*)malloc(bufferSize + newSize); |
| 175 | memcpy(p, data, bufferSize); |
| 176 | memcpy(p + bufferSize, newData, newSize); |
| 177 | bufferSize += newSize; |
| 178 | free(data); |
| 179 | data = p; |
| 180 | } |
| 181 | return bufferSize; |
| 182 | } |
| 183 | |
| 184 | PageBuffer& operator += (const char* p) { |
| 185 | if (p) { |
| 186 | append(p, strlen(p)); |
no outgoing calls
no test coverage detected