示例#1
0
        /// <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);
        }
示例#2
0
 public static extern MqttError MQTTAsync_setCallbacks(
     IntPtr handle,
     IntPtr context,
     MQTTAsync_connectionLost connectionLost,
     MQTTAsync_messageArrived messageArrived,
     MQTTAsync_deliveryComplete deliveryComplete);