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  }