diff --git a/mqtt.go b/mqtt.go new file mode 100644 index 0000000..9c767a0 --- /dev/null +++ b/mqtt.go @@ -0,0 +1,78 @@ +package contracts + +import "github.com/samber/do" + +type Mqtt interface { + Start() error + Stop() error + Restart() error + + // 消息推送 + // @param topic 订阅的主题 + // @param msg 传递的消息 + // @param retain 是否保留 + // @param qos 传递的消息, + // 0: 至多一次, 如果发送失败,也就算了 + // 1: 至少一次, 消息将确保至少被传递一次,但可能会重复发送 + // 2: 确保只有一次, 确保消息仅被传递一次且没有重复传递 + Publish(topic string, msg any, retain bool, qos byte) error + + // 关闭消息队列 + Close(origin string) +} + +type MqttController interface { + Controller + // 订阅事件 + OnSubscribed(GlobalParams) error + // 取消订阅事件 + OnUnsubscribed(GlobalParams) error + // 消息发布事件 + OnMessage(GlobalParams) error + // 保留类型消息事件 + OnRetainMessage(GlobalParams) error + // Qos消息完成事件 + OnQosMessage(GlobalParams) error + // 客户端超时事件 + OnClientExpired(GlobalParams) error + // 保留消息超时事件 + OnRetainedExpired(GlobalParams) error +} + +type MqttHandleController struct { + Controller +} + +func (this MqttHandleController) OnSubscribed(g GlobalParams) error { + return nil +} + +func (this MqttHandleController) OnUnsubscribed(g GlobalParams) error { + return nil +} + +func (this MqttHandleController) OnMessage(g GlobalParams) error { + return nil +} + +func (this MqttHandleController) OnRetainMessage(g GlobalParams) error { + return nil +} + +func (this MqttHandleController) OnQosMessage(g GlobalParams) error { + return nil +} + +func (this MqttHandleController) OnClientExpired(g GlobalParams) error { + return nil +} + +func (this MqttHandleController) OnRetainedExpired(g GlobalParams) error { + return nil +} + +func NewMqttController(container *do.Injector) MqttController { + return &MqttHandleController{ + Controller: &BaseController{container}, + } +}