From c3c6bee7a8a5c189b902b9a63613ffa97887ef05 Mon Sep 17 00:00:00 2001 From: Dan Ballard Date: Sun, 29 Mar 2015 10:45:43 -0700 Subject: [PATCH] broken: warrend: moving to unified messeging system --- .gitignore | 1 + cmd/warrend/cmd_reg.go | 15 +++++++-------- cmd/warrend/conf/conf.go | 32 +++++++++++++++++++++++++++++--- cmd/warrend/conf/deployments.go | 14 ++++++++++++++ 4 files changed, 51 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 2093bf6..019add0 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /deploy /cmd/warren/warren /cmd/warrend/warrend +.project diff --git a/cmd/warrend/cmd_reg.go b/cmd/warrend/cmd_reg.go index 6f4884a..3bc06b4 100644 --- a/cmd/warrend/cmd_reg.go +++ b/cmd/warrend/cmd_reg.go @@ -71,13 +71,12 @@ func unregRun(cmd *SockCommand, c net.Conn, path string, args ...string) { } err := conf.RmDeployment(args[0]) - - // Assume nick, check if registered - deps := conf.GetConf().Deployments - arg := args[0] - if _,ok := deps[arg]; !ok { - // not a registered nick, try as path - absPath := absPath(path, arg) - if _,ok := conf. + if err != nil { + warren.WriteStringz(c, "ERROR: " + err.Error()) + return } + warren.WriteStringz(c, "Unregistered deployment " + args[0]) } + + + diff --git a/cmd/warrend/conf/conf.go b/cmd/warrend/conf/conf.go index 4175be7..b5e37af 100644 --- a/cmd/warrend/conf/conf.go +++ b/cmd/warrend/conf/conf.go @@ -8,6 +8,29 @@ import ( "os" ) +type MsgType int +const ( + AddDeployment MsgType = iota + RmDeploymen +) + +type Msg struct { + mType MsgType + reply chan error + args map[string]string +} + +func NewMsg(mType MsgType, args map[string]string) *Msg { + var m = &Msg{mType, make(chan error), args} + return m +} + +func (m *Msg) Call() error { + confChan <- *m + err := <-m.reply + return err +} + // Conf package - thread safe conf // All write ops are public API functions // that internall use channels to thread safely queue writes @@ -22,7 +45,8 @@ type Conf struct { var conf *Conf = nil var Init = make(chan bool) -var addDeploymentChan = make(chan DeploymentMsg) +var confChan = make(chan Msg) + func loadConf() { file, err := os.Open(warren.WarrendConf) @@ -63,7 +87,7 @@ func saveConf() error { return errors.New("Error: Could not write to file: " + err.Error()) } - return nil + return ni l } func GetConf() Conf { @@ -82,7 +106,9 @@ func Run() { Init <- true // loop for Writes for { - select { + m := <- confChan + + select (m.mType) { case dm := <-addDeploymentChan: addDeployment(&dm) } diff --git a/cmd/warrend/conf/deployments.go b/cmd/warrend/conf/deployments.go index 223f4d0..21ca291 100644 --- a/cmd/warrend/conf/deployments.go +++ b/cmd/warrend/conf/deployments.go @@ -60,3 +60,17 @@ func AddDeployment(d *DeploymentMsg) error { return nil } + +func RmDeployment(string arg) error { + reply = make(chan error) + rmDeploymentChan <- + + // Assume nick, check if registered + deps := GetConf().Deployments + arg := args[0] + if _,ok := deps[arg]; !ok { + // not a registered nick, try as path + absPath := absPath(path, arg) +// if _,ok := conf. + } +}