How abdocooder/webserv works
Webserv is a C++ HTTP/1.1 server. Its main workflow is configuration parsing and server startup, multiplexed client I/O, request parsing and routing, then producing an HTTP response. Routing also enables distinct static-file, directory-listing, redirect, DELETE, upload, session, and CGI behavior. The README documents the overall server capabilities; several source excerpts are partial or absent, so uncertain handler and event-loop wiring is not expanded.
Main entry points: HandlerFactory.cpp Handler factory · CGIHandler.cpp CGI handler · EventLoop.cpp Event loop · Router.cpp Router
Components 24
Startup and configuration
- Server entry
srcs/main.cpp - Config parser
srcs/config/ConfigParser.cpp - Server config
srcs/config/ServerConfig.cpp - Location config
srcs/config/LocationConfig.cpp
HTTP runtime
- Event loop
srcs/core/EventLoop.cpp - Connection state
srcs/core/Connection.cpp - Request parser
srcs/http/HttpRequestParser.cpp - HTTP request
srcs/http/HttpRequest.cpp - Router
srcs/core/Router.cpp - HTTP response
srcs/http/HttpResponse.cpp - Response builder
srcs/http/HttpResponseBuilder.cpp
Request handling
- Handler factory
srcs/core/HandlerFactory.cpp - Static files
srcs/core/StaticFileHandler.cpp - Directory listing
srcs/core/DirectoryListingHandler.cpp - Redirects
srcs/core/RedirectHandler.cpp - DELETE handler
srcs/core/DeleteHandler.cpp - Uploads
srcs/core/UploadHandler.cpp - Sessions
srcs/core/SessionHandler.cpp - CGI handler
srcs/core/CGIHandler.cpp
State and integrations
- Session manager
srcs/core/SessionManager.cpp - CGI context
srcs/cgi/CgiContext.cpp
Other components
- HTTP client
- CGI program
- Web content
Connections 29
- HTTP client → Event loop: opens connection
- Server entry → Config parser: parses config
- Server entry → Event loop: starts loop
- Config parser → Server config: builds config
- Server config → Location config: holds locations
- Event loop → Connection state: manages clients
- Connection state → Request parser: feeds socket data
- Request parser → HTTP request: parses request
- Router → Handler factory: selects handler
- Handler factory → Static files: creates handler
- Handler factory → Directory listing: creates handler
- Handler factory → Redirects: creates handler
- Handler factory → DELETE handler: creates handler
- Handler factory → Uploads: creates handler
- Handler factory → Sessions: creates handler
- Handler factory → CGI handler: creates handler
- Static files → Web content: reads files
- Directory listing → Web content: lists directory
- DELETE handler → Web content: deletes files
- Uploads → Web content: writes uploads
- Sessions → Session manager: reads and updates
- Sessions → Response builder: builds responses
- CGI handler → CGI program: runs script
- Router → CGI context: stores CGI state
- CGI handler → CGI context: provides process data
- CGI handler → HTTP response: sets response
- Router → HTTP response: routes into response
- Response builder → HTTP response: builds response
- Event loop → HTTP client: sends response