zhangmeng
2020-01-21 8c3d1360e1102bc05545fb9bcf06355276d46dd8
app/master/daemon.go
@@ -12,6 +12,22 @@
   "analysis/util"
)
const (
   opRemove = "remove"
   opAdd    = "add"
)
// Notice transit to slave
type Notice struct {
   Op      string   `json:"Op"`
   Content []string `json:"Content"`
}
type transit struct {
   chNotify chan<- []byte
   cancel   context.CancelFunc
}
// NamedProc 单个进程名字和服务通道
type NamedProc struct {
   // 进程名字
@@ -32,16 +48,6 @@
   Typ string
   // 具名进程
   SNameProc []NamedProc
}
// Notice transit to slave
type Notice struct {
   Op      string   `json:"Op"`
   Content []string `json:"Content"`
}
type transit struct {
   chNotify chan<- []byte
   cancel   context.CancelFunc
}
// Worker 单个进程服务
@@ -228,31 +234,31 @@
            for _, w := range workers {
               if v == w.info.Name {
                  // 找到了对应名字的进程,首先求不需要再运行的通道
                  var notice *Notice
                  removes := difference(w.info.Channels, proc.Channels)
                  if len(removes) > 0 {
                     // 通知子进程关闭通道
                     notice = &Notice{
                        Op:      "remove",
                     notice = Notice{
                        Op:      opRemove,
                        Content: removes,
                     }
                     if d, err := json.Marshal(notice); err == nil {
                        w.trans.chNotify <- d
                     }
                  }
                  // 其次求出新增的通道
                  adds := difference(proc.Channels, w.info.Channels)
                  if len(adds) > 0 {
                     // 通知子进程打开通道
                     notice = &Notice{
                        Op:      "add",
                     notice = Notice{
                        Op:      opAdd,
                        Content: adds,
                     }
                  }
                  if notice != nil {
                     if d, err := json.Marshal(*notice); err == nil {
                     if d, err := json.Marshal(notice); err == nil {
                        w.trans.chNotify <- d
                     }
                  }
               }
            }
         }