Example #1
0
func SubmitJob(entryPoint string, job driver.Job) {
	parts := strings.SplitN(entryPoint, "://", 2)
	c, err := net.Dial(parts[0], parts[1])
	if err != nil {
		log.Fatal(err)
	}
	conn := protocol.Conn{Conn: c}
	defer conn.Close()
	err = conn.Send(protocol.TYPE_CLIENT.Bytes())
	if err != nil {
		log.Fatal(err)
	}
	var msgId = []byte("100")
	buf := bytes.NewBuffer(nil)
	buf.Write(msgId)
	buf.Write(protocol.NULL_CHAR)
	buf.WriteByte(byte(protocol.SUBMIT_JOB))
	buf.Write(protocol.NULL_CHAR)
	buf.Write(job.Bytes())
	err = conn.Send(buf.Bytes())
	if err != nil {
		log.Fatal(err)
	}
	payload, err := conn.Receive()
	if err != nil {
		log.Fatal(err)
	}
	_, cmd, _ := protocol.ParseCommand(payload)
	fmt.Printf("%s\n", cmd.String())
}
Example #2
0
func DropFunc(entryPoint, Func string) {
	parts := strings.SplitN(entryPoint, "://", 2)
	c, err := net.Dial(parts[0], parts[1])
	if err != nil {
		log.Fatal(err)
	}
	conn := protocol.Conn{Conn: c}
	defer conn.Close()
	err = conn.Send(protocol.TYPE_CLIENT.Bytes())
	if err != nil {
		log.Fatal(err)
	}
	var msgId = []byte("100")
	buf := bytes.NewBuffer(nil)
	buf.Write(msgId)
	buf.Write(protocol.NULL_CHAR)
	buf.WriteByte(byte(protocol.DROP_FUNC))
	buf.Write(protocol.NULL_CHAR)
	buf.WriteString(Func)
	err = conn.Send(buf.Bytes())
	if err != nil {
		log.Fatal(err)
	}
	payload, err := conn.Receive()
	if err != nil {
		log.Fatal(err)
	}
	_, cmd, _ := protocol.ParseCommand(payload)
	fmt.Printf("%s\n", cmd)
}
Example #3
0
func (sched *Sched) HandleConnection(conn net.Conn) {
	c := protocol.Conn{Conn: conn}
	payload, err := c.Receive()
	if err != nil {
		return
	}
	switch protocol.ClientType(payload[0]) {
	case protocol.TYPE_CLIENT:
		client := NewClient(sched, c)
		go client.Handle()
		break
	case protocol.TYPE_WORKER:
		worker := NewWorker(sched, c)
		go worker.Handle()
		break
	default:
		log.Printf("Unsupport client %d\n", payload[0])
		c.Close()
		break
	}
}
Example #4
0
func ShowStatus(entryPoint string) {
	parts := strings.SplitN(entryPoint, "://", 2)
	c, err := net.Dial(parts[0], parts[1])
	if err != nil {
		log.Fatal(err)
	}
	conn := protocol.Conn{Conn: c}
	defer conn.Close()
	err = conn.Send(protocol.TYPE_CLIENT.Bytes())
	if err != nil {
		log.Fatal(err)
	}
	var msgId = []byte("100")
	buf := bytes.NewBuffer(nil)
	buf.Write(msgId)
	buf.Write(protocol.NULL_CHAR)
	buf.Write(protocol.STATUS.Bytes())
	err = conn.Send(buf.Bytes())
	if err != nil {
		log.Fatal(err)
	}
	payload, err := conn.Receive()
	if err != nil {
		log.Fatal(err)
	}
	_parts := bytes.SplitN(payload, protocol.NULL_CHAR, 2)
	if len(_parts) != 2 {
		err := fmt.Sprint("ParseCommand InvalId %v\n", payload)
		panic(err)
	}
	stats := strings.Split(string(_parts[1]), "\n")
	for _, stat := range stats {
		if stat == "" {
			continue
		}
		line := strings.Split(stat, ",")
		fmt.Printf("Func: %s\tWorker: %s\tJob: %s\tProcessing: %s\n",
			line[0], line[1], line[2], line[3])
	}
}
Example #5
0
func Run(entryPoint, Func, cmd string) {
	parts := strings.SplitN(entryPoint, "://", 2)
	for {
		c, err := net.Dial(parts[0], parts[1])
		if err != nil {
			if err != io.EOF {
				log.Printf("Error: %s\n", err.Error())
			}
			log.Printf("Wait 5 second to reconnecting")
			time.Sleep(5 * time.Second)
			continue
		}
		conn := protocol.Conn{Conn: c}
		err = handleWorker(conn, Func, cmd)
		if err != nil {
			if err != io.EOF {
				log.Printf("Error: %s\n", err.Error())
			}
		}
		conn.Close()
	}
}