Server Process Flow

This describes the process flow of how the server runs.

  • create logger
    • init stderr
  • create server
  • init server
    • create server js runtime
      • create coma global namespace
    • create server registry
    • init server registry
      • system info
        • hardware (memory, cpus, storage, network)
        • os (version, limits, capabilities)
      • configuration defaults
      • load environment variables
      • load command line arguments
        • if invalid, show usage and exit
      • load configuration file
  • update logger
    • enable/disable syslog & file
      • clean up log directory?
  • load modules
  • init sites
    • bind to ips/ports
    • load native & script modules
    • init ssl
    • create js runtime
  • init thread pool
    • create js contexts for each site
  • deamonize?
  • force single instance?
    • create pid file defined in config
  • drop root privileges
    • permanently?
    • switch user/group/dir defined in config
  • run server
    • connect to peers?
    • listen for connections
      • on connect, delegate connection to thread
  • delete pid file
  • exit