connect = require 'connect'
createServer = require './createServer'
machina = require('machina')()
logger = require 'torch'

# service init, connect to interfaces
#initServices = config.require 'load/initServices'
#veinAdapter = config.require 'load/veinAdapter'
#particle = config.require 'load/particle'

server = new machina.Fsm
  initialState: 'offline'
  states:
    offline:
      start: ->
        port = 4000
        app = connect()
        @server = createServer port, app

        #initServices()
        #veinAdapter(server) topLevelServices
        #particle(server)

        # Good job, we made it!
        logger "Server started on #{port}"
        @transition 'online'

    online:
      stop: ->
        @server.close()
        @transition 'offline'

logger.red server
server.on '*', logger.yellow

server.handle 'start'
server.handle 'stop'
