mirror of
https://onedev.site.tesses.net/tesses-framework
synced 2026-02-08 07:45:46 +00:00
Make streams and vfs and http shared_ptr
This commit is contained in:
@@ -5,16 +5,16 @@ using namespace Tesses::Framework::Streams;
|
||||
using namespace Tesses::Framework::Http;
|
||||
using namespace Tesses::Framework::Filesystem;
|
||||
|
||||
VFS* vfs;
|
||||
std::shared_ptr<VFS> vfs;
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
|
||||
|
||||
TF_InitWithConsole();
|
||||
vfs = new SubdirFilesystem(&LocalFS,Tesses::Framework::Filesystem::VFSPath::GetAbsoluteCurrentDirectory(),false);
|
||||
vfs = std::make_shared<SubdirFilesystem>(LocalFS,Tesses::Framework::Filesystem::VFSPath::GetAbsoluteCurrentDirectory());
|
||||
|
||||
CallbackServer cb([](ServerContext& ctx)->bool{
|
||||
std::shared_ptr<CallbackServer> cb = std::make_shared<CallbackServer>([](ServerContext& ctx)->bool{
|
||||
if(ctx.path == "/")
|
||||
{
|
||||
ctx.WithMimeType("text/html")
|
||||
@@ -39,7 +39,7 @@ int main(int argc, char** argv)
|
||||
{
|
||||
if(ctx.NeedToParseFormData())
|
||||
{
|
||||
ctx.ParseFormData([](std::string mime, std::string filename,std::string name)->Stream* {
|
||||
ctx.ParseFormData([](std::string mime, std::string filename,std::string name)->std::shared_ptr<Stream> {
|
||||
if(name != "file") return nullptr;
|
||||
VFSPath path("/"+filename);
|
||||
auto strm = vfs->OpenFile(path,"wb");
|
||||
@@ -81,8 +81,8 @@ int main(int argc, char** argv)
|
||||
return false;
|
||||
});
|
||||
|
||||
Tesses::Framework::Http::MountableServer mountable(cb);
|
||||
mountable.Mount("/files/",new FileServer(vfs,true,true,false),true);
|
||||
auto mountable = std::make_shared<Tesses::Framework::Http::MountableServer>(cb);
|
||||
mountable->Mount("/files/",std::make_shared<FileServer>(vfs,true,false));
|
||||
|
||||
HttpServer srv(4985,mountable);
|
||||
srv.StartAccepting();
|
||||
|
||||
@@ -7,9 +7,9 @@ int main(int argc, char** argv)
|
||||
std::cout << "USAGE: " << argv[0] << " BINARYFILE VARNAME HEADERFILE" << std::endl;
|
||||
return 0;
|
||||
}
|
||||
Tesses::Framework::Streams::FileStream fs(argv[1],"rb");
|
||||
if(!fs.CanRead()) return 1;
|
||||
Tesses::Framework::TextStreams::StreamWriter writer(argv[3]);
|
||||
Tesses::Framework::Text::GenerateCHeaderFile(&fs, argv[2], &writer);
|
||||
auto fs=std::make_shared<Tesses::Framework::Streams::FileStream>(argv[1],"rb");
|
||||
if(!fs->CanRead()) return 1;
|
||||
auto writer = std::make_shared<Tesses::Framework::TextStreams::StreamWriter>(argv[3]);
|
||||
Tesses::Framework::Text::GenerateCHeaderFile(fs, argv[2], writer);
|
||||
return 0;
|
||||
}
|
||||
@@ -59,7 +59,7 @@ int main(int argc, char** argv)
|
||||
std::cout << "In folder: " << std::filesystem::absolute(directory).string() << std::endl;
|
||||
|
||||
|
||||
FileServer fs(directory,allowListing, spa);
|
||||
auto fs = std::make_shared<FileServer>(directory,allowListing, spa);
|
||||
HttpServer server(port,fs);
|
||||
server.StartAccepting();
|
||||
TF_RunEventLoop();
|
||||
|
||||
@@ -2,35 +2,33 @@
|
||||
using namespace Tesses::Framework::Streams;
|
||||
using namespace Tesses::Framework::Serialization::Json;
|
||||
using namespace Tesses::Framework::TextStreams;
|
||||
FileStream* OpenWrite(std::string dest)
|
||||
std::shared_ptr<FileStream> OpenWrite(std::string dest)
|
||||
{
|
||||
if(dest == "-")
|
||||
{
|
||||
return new FileStream(stdout,false,"w");
|
||||
return std::make_shared<FileStream>(stdout,false,"w");
|
||||
}
|
||||
else
|
||||
{
|
||||
FileStream* strm = new FileStream(dest,"w");
|
||||
auto strm = std::make_shared<FileStream>(dest,"w");
|
||||
if(!strm->CanWrite())
|
||||
{
|
||||
delete strm;
|
||||
return nullptr;
|
||||
}
|
||||
return strm;
|
||||
}
|
||||
}
|
||||
FileStream* OpenRead(std::string src)
|
||||
std::shared_ptr<FileStream> OpenRead(std::string src)
|
||||
{
|
||||
if(src == "-")
|
||||
{
|
||||
return new FileStream(stdin,false,"r");
|
||||
return std::make_shared<FileStream>(stdin,false,"r");
|
||||
}
|
||||
else
|
||||
{
|
||||
FileStream* strm = new FileStream(src,"r");
|
||||
auto strm = std::make_shared<FileStream>(src,"r");
|
||||
if(!strm->CanRead())
|
||||
{
|
||||
delete strm;
|
||||
return nullptr;
|
||||
}
|
||||
return strm;
|
||||
@@ -45,25 +43,24 @@ int main(int argc, char** argv)
|
||||
std::cout << "DEST: prettied file or - for stdout" << std::endl;
|
||||
return 0;
|
||||
}
|
||||
FileStream* src = OpenRead(argv[1]);
|
||||
auto src = OpenRead(argv[1]);
|
||||
|
||||
FileStream* dest = OpenWrite(argv[2]);
|
||||
auto dest = OpenWrite(argv[2]);
|
||||
|
||||
if(src == nullptr)
|
||||
{
|
||||
if(dest != nullptr) delete dest;
|
||||
|
||||
std::cerr << "ERROR: Input could not be read" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
if(dest == nullptr)
|
||||
{
|
||||
delete src;
|
||||
std::cerr << "ERROR: Output could not be read" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
StreamReader reader(src,true);
|
||||
StreamWriter writer(dest,true);
|
||||
StreamReader reader(src);
|
||||
StreamWriter writer(dest);
|
||||
|
||||
auto str = reader.ReadToEnd();
|
||||
writer.WriteLine(Json::Encode(Json::Decode(str)));
|
||||
|
||||
@@ -2,35 +2,33 @@
|
||||
using namespace Tesses::Framework::Streams;
|
||||
using namespace Tesses::Framework::Serialization::Json;
|
||||
using namespace Tesses::Framework::TextStreams;
|
||||
FileStream* OpenWrite(std::string dest)
|
||||
std::shared_ptr<FileStream> OpenWrite(std::string dest)
|
||||
{
|
||||
if(dest == "-")
|
||||
{
|
||||
return new FileStream(stdout,false,"w");
|
||||
return std::make_shared<FileStream>(stdout,false,"w");
|
||||
}
|
||||
else
|
||||
{
|
||||
FileStream* strm = new FileStream(dest,"w");
|
||||
auto strm = std::make_shared<FileStream>(dest,"w");
|
||||
if(!strm->CanWrite())
|
||||
{
|
||||
delete strm;
|
||||
return nullptr;
|
||||
}
|
||||
return strm;
|
||||
}
|
||||
}
|
||||
FileStream* OpenRead(std::string src)
|
||||
std::shared_ptr<FileStream> OpenRead(std::string src)
|
||||
{
|
||||
if(src == "-")
|
||||
{
|
||||
return new FileStream(stdin,false,"r");
|
||||
return std::make_shared<FileStream>(stdin,false,"r");
|
||||
}
|
||||
else
|
||||
{
|
||||
FileStream* strm = new FileStream(src,"r");
|
||||
auto strm = std::make_shared<FileStream>(src,"r");
|
||||
if(!strm->CanRead())
|
||||
{
|
||||
delete strm;
|
||||
return nullptr;
|
||||
}
|
||||
return strm;
|
||||
@@ -45,25 +43,24 @@ int main(int argc, char** argv)
|
||||
std::cout << "DEST: unprettied file or - for stdout" << std::endl;
|
||||
return 0;
|
||||
}
|
||||
FileStream* src = OpenRead(argv[1]);
|
||||
auto src = OpenRead(argv[1]);
|
||||
|
||||
FileStream* dest = OpenWrite(argv[2]);
|
||||
auto dest = OpenWrite(argv[2]);
|
||||
|
||||
if(src == nullptr)
|
||||
{
|
||||
if(dest != nullptr) delete dest;
|
||||
std::cerr << "ERROR: Input could not be read" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
if(dest == nullptr)
|
||||
{
|
||||
delete src;
|
||||
|
||||
std::cerr << "ERROR: Output could not be read" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
StreamReader reader(src,true);
|
||||
StreamWriter writer(dest,true);
|
||||
StreamReader reader(src);
|
||||
StreamWriter writer(dest);
|
||||
|
||||
auto str = reader.ReadToEnd();
|
||||
writer.WriteLine(Json::Encode(Json::Decode(str),false));
|
||||
|
||||
@@ -96,7 +96,7 @@ int main(int argc,char** argv)
|
||||
{
|
||||
if(args.size()<3) continue;
|
||||
std::vector<std::string> args2(args.begin()+2,args.end());
|
||||
auto f = LocalFS.OpenFile(args[1],"rb");
|
||||
auto f = LocalFS->OpenFile(args[1],"rb");
|
||||
if(f != nullptr)
|
||||
{
|
||||
auto path = Environment::GetRealExecutablePath(args2[0]);
|
||||
@@ -106,11 +106,10 @@ int main(int argc,char** argv)
|
||||
{
|
||||
auto strm = p.GetStdinStream();
|
||||
f->CopyTo(strm);
|
||||
delete strm;
|
||||
|
||||
p.CloseStdInNow();
|
||||
p.WaitForExit();
|
||||
}
|
||||
delete f;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user