//-*- coding:utf-8; indent-tabs-mode:nil; -*-packageagentimport("fmt""encoding/json""github.com/Badangel/logex")funcinitPostHandlers(){postHandler=map[string]handlerFunc{"/agent/cmd":PostCmd,}}funcPostCmd(subpathstring,mmap[string]string,b[]byte)(string,string,error){varworkWorkerr:=json.Unmarshal(b,&work)iferr!=nil{logex.Warningf("Unmarshal from %s error (+%v)",string(b),err)returnquote(""),"",fmt.Errorf("Work json unmarshal work failed, %v",err)}if_,ok:=CmdWorkFilter.Load(work.Token());ok{logex.Warningf("Another work with same token is doing. Token(%s)",work.Token())returnquote(""),"",fmt.Errorf("Another work with same key is doing.",err)}CmdWorkFilter.Store(work.Token(),true)err=work.DoWork()CmdWorkFilter.Delete(work.Token())iferr!=nil{returnquote(""),"",fmt.Errorf("Do work failed.",err)}returnquote(""),"",err}