Add route server

This commit is contained in:
2026-01-12 12:25:06 -06:00
parent 2f5271f7c3
commit 848fca7f36
12 changed files with 247 additions and 19 deletions

View File

@@ -566,7 +566,12 @@ namespace Tesses::Framework::Http
this->responseHeaders.SetValue("Transfer-Encoding","chunked");
this->WriteHeaders();
return std::make_shared<HttpStream>(this->strm,length,false,version == "HTTP/1.1");
auto strm = std::make_shared<HttpStream>(this->strm,length,false,version == "HTTP/1.1");
if(method == "HEAD")
{
strm->Close();
}
return strm;
}
std::shared_ptr<Stream> ServerContext::OpenRequestStream()
{
@@ -788,23 +793,26 @@ namespace Tesses::Framework::Http
this->WithSingleHeader("Content-Range","bytes " + std::to_string(begin) + "-" + std::to_string(end) + "/" + std::to_string(len));
this->statusCode = PartialContent;
this->WriteHeaders();
strm->Seek(begin,SeekOrigin::Begin);
if(this->method != "HEAD")
{
strm->Seek(begin,SeekOrigin::Begin);
uint8_t buffer[1024];
uint8_t buffer[1024];
size_t read=0;
do {
read = sizeof(buffer);
myLen = (end - begin)+1;
if(myLen < read) read = (size_t)myLen;
if(read == 0) break;
read = strm->Read(buffer,read);
if(read == 0) break;
this->strm->WriteBlock(buffer,read);
begin += read;
} while(read > 0 && !this->strm->EndOfStream());
size_t read=0;
do {
read = sizeof(buffer);
myLen = (end - begin)+1;
if(myLen < read) read = (size_t)myLen;
if(read == 0) break;
read = strm->Read(buffer,read);
if(read == 0) break;
this->strm->WriteBlock(buffer,read);
begin += read;
} while(read > 0 && !this->strm->EndOfStream());
}
}
else
@@ -821,6 +829,7 @@ namespace Tesses::Framework::Http
this->WithSingleHeader("Accept-Range","bytes");
this->WithSingleHeader("Content-Length",std::to_string(len));
this->WriteHeaders();
if(this->method != "HEAD")
strm->CopyTo(this->strm);
}
}
@@ -828,8 +837,10 @@ namespace Tesses::Framework::Http
}
else
{
auto chunkedStream = this->OpenResponseStream();
if(method != "HEAD")
strm->CopyTo(chunkedStream);