bootstrap.lua 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. local skynet = require "skynet"
  2. local harbor = require "skynet.harbor"
  3. require "skynet.manager" -- import skynet.launch, ...
  4. local memory = require "skynet.memory"
  5. skynet.start(function()
  6. local sharestring = tonumber(skynet.getenv "sharestring" or 4096)
  7. memory.ssexpand(sharestring)
  8. local standalone = skynet.getenv "standalone"
  9. local launcher = assert(skynet.launch("snlua","launcher"))
  10. skynet.name(".launcher", launcher)
  11. local harbor_id = tonumber(skynet.getenv "harbor" or 0)
  12. if harbor_id == 0 then
  13. assert(standalone == nil)
  14. standalone = true
  15. skynet.setenv("standalone", "true")
  16. local ok, slave = pcall(skynet.newservice, "cdummy")
  17. if not ok then
  18. skynet.abort()
  19. end
  20. skynet.name(".cslave", slave)
  21. else
  22. if standalone then
  23. if not pcall(skynet.newservice,"cmaster") then
  24. skynet.abort()
  25. end
  26. end
  27. local ok, slave = pcall(skynet.newservice, "cslave")
  28. if not ok then
  29. skynet.abort()
  30. end
  31. skynet.name(".cslave", slave)
  32. end
  33. if standalone then
  34. local datacenter = skynet.newservice "datacenterd"
  35. skynet.name("DATACENTER", datacenter)
  36. end
  37. skynet.newservice "service_mgr"
  38. pcall(skynet.newservice,skynet.getenv "start" or "main")
  39. skynet.exit()
  40. end)