Skip to content

Latest commit

 

History

History
64 lines (52 loc) · 1.42 KB

cores.md

File metadata and controls

64 lines (52 loc) · 1.42 KB

Cores

Cores in frock are another special type of frock plugin; they can do anything, and have access to the core frock but they will never be restarted once loaded; cores are used to provide control functions to frock, an example might be a listener that reloads frock when it receives a POST to its interface:

Example

// in file <project_root>/cores/reload-control.js
var http = require('http')

module.exports = reloadCore

function reloadCore (frock, logger, options) {
  var server = http.createServer(handleRequest)

  server.listen(options.port || 9001, function () {
    logger.info('listening')
  })

  function handleRequest (req, res) {
    if (req.method.toLowerCase() === 'post') {
      frock.reload(function () {
        res.statusCode = 200
        res.end('reloaded')
      })

      return
    }

    res.statusCode = 400
    res.end('bad request')
  }
}

Note that its factory function is called with the exact same parameters as a frock plugin, but doesn't need to return anything. Once instantiated, it just runs until the frock process exits.

Cores are configured in your project's package.json, not in the frockfile.json:

{
  "name": "frock-test-project",
  "version": "0.0.0",
  "dependencies": {
    "frock": "0.0.3"
  },
  "frock": {
    "cores": [
      {
        "handler": "./cores/reload-control",
        "options": {
          "port": 9090
        }
      }
    ]
  }
}