/// <summary> /// 设置客户端相关回调 /// </summary> private void InitClientCallbacks() { var lost = new MQTTAsync_connectionLost((context, cause) => { var e = this.OnConnectionLost; if (e != null) { e.Invoke(this); } }); var arrvied = new MQTTAsync_messageArrived((context, topicName, topicLen, msg) => { var e = this.OnMessageArrived; if (e != null) { var topic = Marshal.PtrToStringAnsi(topicName, topicLen); var message = MqttMessage.From(msg); e.Invoke(this, topic, message); } MQTTAsync.MQTTAsync_free(topicName); MQTTAsync.MQTTAsync_freeMessage(ref msg); return(1); }); var er = MQTTAsync.MQTTAsync_setCallbacks(this.handle, IntPtr.Zero, lost, arrvied, null); this.EnsureSuccessCode(er); this.AutoRef(lost, arrvied); }
public static extern MqttError MQTTAsync_setCallbacks( IntPtr handle, IntPtr context, MQTTAsync_connectionLost connectionLost, MQTTAsync_messageArrived messageArrived, MQTTAsync_deliveryComplete deliveryComplete);