11#ifndef SIMPLEWEBSERVER_H
12#define SIMPLEWEBSERVER_H
34 using RequestCallback = std::function<std::vector<char>(
const std::string&)>;
43 void RegisterEndpoint(
const std::string& szEndpoint, RequestCallback fnCallback);
44 void AddStaticDirectory(
const std::string& szUrlPrefix,
const std::string& szLocalDir);
52 std::atomic<int> m_nSocketFD;
53 std::atomic<bool> m_bRunning;
54 std::string m_szHtmlContent;
55 std::map<std::string, RequestCallback> m_mGetCallbacks;
56 std::mutex m_muDataMutex;
68 std::string szLocalPath;
71 std::map<std::string, StaticDir> m_mStaticDirectories;
74 std::thread m_thAcceptThread;
75 std::vector<std::thread> m_vWorkerThreads;
76 std::mutex m_muThreadMutex;
88 std::vector<char>
LoadFile(
const std::string& szPath);
A lightweight, multi-threaded HTTP server.
Definition SimpleWebServer.h:32
void RegisterEndpoint(const std::string &szEndpoint, RequestCallback fnCallback)
Registers a GET endpoint with a callback function.
Definition SimpleWebServer.cpp:81
void StopServer()
Stops the web server.
Definition SimpleWebServer.cpp:253
std::vector< char > LoadFile(const std::string &szPath)
Loads a file from disk into a byte vector.
Definition SimpleWebServer.cpp:119
void StartServer()
Starts the web server.
Definition SimpleWebServer.cpp:193
void HandleClient(int nClientFD)
Handles an individual client connection.
Definition SimpleWebServer.cpp:328
void AcceptLoop()
Main loop to accept incoming connections.
Definition SimpleWebServer.cpp:291
std::string GetMimeType(const std::string &szPath)
Determines the MIME type based on the file extension.
Definition SimpleWebServer.cpp:165
~SimpleWebServer()
Destroy the Simple Web Server object.
Definition SimpleWebServer.cpp:52
void AddStaticDirectory(const std::string &szUrlPrefix, const std::string &szLocalDir)
Adds a static directory to serve files from.
Definition SimpleWebServer.cpp:96
void SetHtmlContent(const std::string &szHtml)
Mutator for the Html Content private member.
Definition SimpleWebServer.cpp:66
Represents a local path as an object.
Definition SimpleWebServer.h:66