goRedisDLM/main.go

61 lines
928 B
Go

package main
import (
"flag"
"goRedisDLM/engine"
"goRedisDLM/rpcSupport"
"goRedisDLM/scheduler"
"goRedisDLM/worker/client"
"log"
"net/rpc"
"strings"
)
var host = flag.String("host", "", "host")
func main() {
flag.Parse()
if *host == "" {
flag.Usage()
return
}
e := engine.FirstEngine{
Scheduler: &scheduler.FirstScheduler{},
WorkCount: 15,
Work: client.CreateRpcWorker(createRpcPoll(*host)),
}
e.Run(10)
}
func createRpcPoll(port string) chan *rpc.Client {
out := make(chan *rpc.Client)
var clients []*rpc.Client
split := strings.Split(port, ",")
for i, ele := range split {
cli, err := rpcSupport.RpcClient(ele)
if err != nil {
log.Printf("host: %s,%d create err: %v", ele, i, err)
continue
}
log.Printf("rpc cli create ok: %s", ele)
clients = append(clients, cli)
}
go func() {
for {
for _, ele := range clients {
out <- ele
}
}
}()
return out
}