github.com/jingruilea/kubeedge@v1.2.0-beta.0.0.20200410162146-4bb8902b3879/cloud/pkg/edgecontroller/messagelayer/context.go (about) 1 package messagelayer 2 3 import ( 4 beehiveContext "github.com/kubeedge/beehive/pkg/core/context" 5 "github.com/kubeedge/beehive/pkg/core/model" 6 "github.com/kubeedge/kubeedge/cloud/pkg/edgecontroller/config" 7 ) 8 9 // MessageLayer define all functions that message layer must implement 10 type MessageLayer interface { 11 Send(message model.Message) error 12 Receive() (model.Message, error) 13 Response(message model.Message) error 14 } 15 16 // ContextMessageLayer build on context 17 type ContextMessageLayer struct { 18 SendModuleName string 19 ReceiveModuleName string 20 ResponseModuleName string 21 } 22 23 // Send message 24 func (cml *ContextMessageLayer) Send(message model.Message) error { 25 beehiveContext.Send(cml.SendModuleName, message) 26 return nil 27 } 28 29 // Receive message 30 func (cml *ContextMessageLayer) Receive() (model.Message, error) { 31 return beehiveContext.Receive(cml.ReceiveModuleName) 32 } 33 34 // Response message 35 func (cml *ContextMessageLayer) Response(message model.Message) error { 36 if !config.Config.EdgeSiteEnable { 37 beehiveContext.Send(cml.ResponseModuleName, message) 38 } else { 39 beehiveContext.SendResp(message) 40 } 41 return nil 42 } 43 44 // NewContextMessageLayer create a ContextMessageLayer 45 func NewContextMessageLayer() MessageLayer { 46 return &ContextMessageLayer{ 47 SendModuleName: string(config.Config.Context.SendModule), 48 ReceiveModuleName: string(config.Config.Context.ReceiveModule), 49 ResponseModuleName: string(config.Config.Context.ResponseModule), 50 } 51 }