# Curassow Architecture This document outlines the architecture and design of the Curassow HTTP server. Curassow uses the pre-fork worker model, which means that HTTP requests are handled independently inside child worker processes. ## Arbiter The arbiter is the master process that manages the children worker processes. It has a simple loop that listens for signals sent to the master process and handles these signals. ### Signals The arbiter will watch for system signals and perform actions when it receives them. #### SIGQUIT and SIGINT The quit and interrupt signals can be used to quickly shutdown Curassow. #### SIGTERM The termination signal can be used to gracefully shutdown Curassow. The arbiter will wait for worker processes to finish handling their current requests or gracefully timeout. #### TTIN Increment the amount of worker processes by one. #### TTOU Decrement the amount of worker processes by one. ## Worker The worker process is responsible for handling HTTP requests.