| | |
| | | "errors" |
| | | "fmt" |
| | | "os" |
| | | "sync" |
| | | "time" |
| | | ) |
| | | |
| | |
| | | fnLog func(...interface{}) |
| | | |
| | | SubCh chan *MsgInfo |
| | | |
| | | mtx sync.Mutex |
| | | started bool |
| | | } |
| | | |
| | | func NewMicroNode(ctx context.Context,q chan os.Signal, serverId string, reg *RegisterInfo, fnLog func(v ...interface{})) (*MicroNode, error){ |
| | |
| | | } |
| | | |
| | | func (ms *MicroNode) StartClient() { |
| | | ms.mtx.Lock() |
| | | defer ms.mtx.Unlock() |
| | | if !ms.started { |
| | | ms.started = true |
| | | |
| | | go ms.startHeartbeat() |
| | | } |
| | | } |
| | | |
| | | func (ms *MicroNode) StartServer(funcMap map[string]MicroFunc) { |
| | | ms.mtx.Lock() |
| | | if !ms.started { |
| | | ms.started = true |
| | | ms.mtx.Unlock() |
| | | |
| | | ms.handlers = funcMap |
| | | |
| | | go ms.startHeartbeat() |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | //接收订阅到的消息 |
| | | //go ms.startRecvSubMsg() |
| | | //作为server启动 |
| | | //ms.serve() |
| | | } |
| | | ms.mtx.Unlock() |
| | | } |
| | | |
| | | //开始接收订阅消息 |
| | |
| | | |
| | | if f,ok := ms.handlers[reqBody.Path];ok { |
| | | reqBody.SrcProc = msgR.SrcProc |
| | | ri = f(&reqBody) |
| | | ctx := Context{ |
| | | ms, |
| | | ms, |
| | | } |
| | | ri = f(&ctx, &reqBody) |
| | | ms.printLog("call funcMap f,reply.Success:", ri.Success) |
| | | } else { |
| | | ms.printLog("ms.funcMap not eixst path: ", reqBody.Path) |
| | |
| | | package bhomeclient |
| | | |
| | | type MicroFunc func(req *Request) *Reply |
| | | type Context struct { |
| | | Bk Broker |
| | | Tr Transport |
| | | } |
| | | |
| | | type MicroFunc func(ctx *Context, req *Request) *Reply |
| | | |
| | | |
| | | type Transport interface { |