server.go 907 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package server
  2. import (
  3. "bufio"
  4. "fmt"
  5. "os/exec"
  6. "strings"
  7. "time"
  8. )
  9. //StartService is exported
  10. func (server *Handler) StartService() {
  11. cmdName := server.JavaPath + " -Xmx" + server.maxRAM + " -Xms" + server.minRAM + " -jar " + server.ServerJar + " nogui " + server.args
  12. fmt.Println(cmdName)
  13. cmdArgs := strings.Fields(cmdName)
  14. cmd := exec.Command(cmdArgs[0], cmdArgs[1:len(cmdArgs)]...)
  15. cmd.Dir = "./server/"
  16. server.stdout, _ = cmd.StdoutPipe()
  17. server.stdin, _ = cmd.StdinPipe()
  18. cmd.Start()
  19. server.StartStdout()
  20. //cmd.Wait()
  21. }
  22. //StartStdout is exported
  23. func (server *Handler) StartStdout() {
  24. i := 0
  25. buf := bufio.NewReader(server.stdout)
  26. go func() {
  27. for {
  28. line, _, _ := buf.ReadLine()
  29. if string(line) != "" {
  30. newLog := Log{
  31. ID: i,
  32. Timestamp: time.Now(),
  33. Log: string(line),
  34. }
  35. server.log = append(server.log, newLog)
  36. i++
  37. }
  38. }
  39. }()
  40. }