Faster default_resource for files smaller than buffer_size.

This commit is contained in:
eidheim 2015-02-23 09:46:29 +01:00
commit 0acc7455f8
2 changed files with 22 additions and 14 deletions

View file

@ -109,15 +109,19 @@ int main() {
response << "HTTP/1.1 200 OK\r\nContent-Length: " << length << "\r\n\r\n"; response << "HTTP/1.1 200 OK\r\nContent-Length: " << length << "\r\n\r\n";
//read and send 128 KB at a time //read and send 128 KB at a time if file-size>buffer_size
size_t buffer_size=131072; size_t buffer_size=131072;
vector<char> buffer(buffer_size); if(length>buffer_size) {
stringstream ss; vector<char> buffer(buffer_size);
size_t read_length; stringstream ss;
while((read_length=ifs.read(&buffer[0], buffer_size).gcount())>0) { size_t read_length;
ss.write(&buffer[0], read_length); while((read_length=ifs.read(&buffer[0], buffer_size).gcount())>0) {
response << ss.rdbuf() << HttpServer::flush; ss.write(&buffer[0], read_length);
response << ss.rdbuf() << HttpServer::flush;
}
} }
else
response << ifs.rdbuf();
ifs.close(); ifs.close();
} }

View file

@ -109,15 +109,19 @@ int main() {
response << "HTTP/1.1 200 OK\r\nContent-Length: " << length << "\r\n\r\n"; response << "HTTP/1.1 200 OK\r\nContent-Length: " << length << "\r\n\r\n";
//read and send 128 KB at a time //read and send 128 KB at a time if file-size>buffer_size
size_t buffer_size=131072; size_t buffer_size=131072;
vector<char> buffer(buffer_size); if(length>buffer_size) {
stringstream ss; vector<char> buffer(buffer_size);
size_t read_length; stringstream ss;
while((read_length=ifs.read(&buffer[0], buffer_size).gcount())>0) { size_t read_length;
ss.write(&buffer[0], read_length); while((read_length=ifs.read(&buffer[0], buffer_size).gcount())>0) {
response << ss.rdbuf() << HttpsServer::flush; ss.write(&buffer[0], read_length);
response << ss.rdbuf() << HttpServer::flush;
}
} }
else
response << ifs.rdbuf();
ifs.close(); ifs.close();
} }