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()) }
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) }
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 } }
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]) } }
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() } }