diff --git a/server/process.go b/server/process.go new file mode 100644 index 00000000..8cd7ce37 --- /dev/null +++ b/server/process.go @@ -0,0 +1,57 @@ +package server + +import ( + "github.com/yaoapp/gou" + "github.com/yaoapp/kun/exception" +) + +func init() { + gou.RegisterProcessHandler("xiang.server.Start", ProcessStart) + gou.RegisterProcessHandler("xiang.server.Connect", ProcessConnect) +} + +// ProcessStart xiang.server.Start +func ProcessStart(process *gou.Process) interface{} { + process.ValidateArgNums(1) + + name := process.ArgsString(0) + serv, has := gou.Sockets[name] + if !has { + exception.New("%s does not load", 400, name).Throw() + } + + args := []interface{}{} + if process.NumOfArgs() > 1 { + args = process.Args[1:] + } + + if serv.Mode != "server" { + exception.New("%s mode [%s] not server", 400, name, serv.Mode).Throw() + } + + serv.Start(args...) + return nil +} + +// ProcessConnect xiang.server.Connect +func ProcessConnect(process *gou.Process) interface{} { + process.ValidateArgNums(1) + + name := process.ArgsString(0) + serv, has := gou.Sockets[name] + if !has { + exception.New("%s does not load", 400, name).Throw() + } + + args := []interface{}{} + if process.NumOfArgs() > 1 { + args = process.Args[1:] + } + + if serv.Mode != "client" { + exception.New("%s mode [%s] not server", 400, name, serv.Mode).Throw() + } + + serv.Connect(args...) + return nil +} diff --git a/server/socket_test.go b/server/socket_test.go index f86a5a47..05af1a9d 100644 --- a/server/socket_test.go +++ b/server/socket_test.go @@ -14,6 +14,20 @@ func TestLoad(t *testing.T) { check(t) } +func TestProcessStart(t *testing.T) { + Load(config.Conf) + // assert.NotPanics(t, func() { + // gou.NewProcess("xiang.server.Start", "rfid").Run() + // }) +} + +func TestProcessConnect(t *testing.T) { + Load(config.Conf) + // assert.NotPanics(t, func() { + // gou.NewProcess("xiang.server.Connect", "rfid_client").Run() + // }) +} + func check(t *testing.T) { keys := []string{} for key := range gou.Sockets {