Faster default_resource for files smaller than buffer_size.
This commit is contained in:
parent
525eb2983b
commit
0acc7455f8
2 changed files with 22 additions and 14 deletions
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue