github.com/dustinrc/deis@v1.10.1-0.20150917223407-0894a5fb979e/mesos/pkg/boot/zookeeper/zookeeper_server.go (about)

     1  package zookeeper
     2  
     3  import (
     4  	"io"
     5  	"os/exec"
     6  	"time"
     7  )
     8  
     9  // ZkServer struct to execute zookeeper commands.
    10  type ZkServer struct {
    11  	Stdout, Stderr io.Writer
    12  
    13  	cmd *exec.Cmd
    14  }
    15  
    16  // Start starts a zookeeper server
    17  func (srv *ZkServer) Start() error {
    18  	srv.cmd = exec.Command("/opt/zookeeper/bin/zkServer.sh", "start-foreground")
    19  	srv.cmd.Stdout = srv.Stdout
    20  	srv.cmd.Stderr = srv.Stderr
    21  	return srv.cmd.Start()
    22  }
    23  
    24  // Pid returns the process id of the running zookeeper server
    25  func (srv *ZkServer) Pid() int {
    26  	return srv.cmd.Process.Pid
    27  }
    28  
    29  // Stop stops a running zookeeper server
    30  func (srv *ZkServer) Stop() {
    31  	go func() {
    32  		time.Sleep(1 * time.Second)
    33  		srv.cmd.Process.Kill()
    34  	}()
    35  	srv.cmd.Process.Wait()
    36  }