Interfaces - Client (agente)

La interfaz de Cliente es utilizada para definir los mecanismos por los cuales los mensajes son enviados al servidor

package comm

type Client interface {
	SendMsg(msg []byte) ([]byte, error)
}

Esta interfaz es utilizada desde las funciones encargadas por la comunicación de los agentes

type Agent struct {
	client comm.Client
}

func NewAgent(client comm.Client) *Agent {
	return &Agent{client: client}
}

func (a *Agent) sendMsg(agentMsg *AgentMsg) (*LPMsg, error) {
	var lpMsg LPMsg
	msg, err := json.Marshal(agentMsg)
	if err != nil {
		return nil, err
	}
	response, err := a.client.SendMsg(msg)
	if err != nil {
		return nil, err
	}
	err = json.Unmarshal(response, &lpMsg)
	if err != nil {
		return nil, err
	}
	return &lpMsg, nil
}

Última actualización