Пример #1
0
 public PublishCB(HikePacket packet, HikeMqttManager hikeMqttManager, int qos, bool removeFromDBOnReceivingAck)
 {
     this.packet                     = packet;
     this.hikeMqttManager            = hikeMqttManager;
     this.qos                        = qos;
     this.removeFromDBOnReceivingAck = removeFromDBOnReceivingAck;
 }
Пример #2
0
        //this is called when messages are sent 1 by 1
        public void send(HikePacket packet, int qos)
        {
            if (!isConnected())
            {
                /* only care about failures for messages we care about. */
                if (qos > 0)
                {
                    try
                    {
                        MqttDBUtils.addSentMessage(packet);
                    }
                    catch (Exception e)
                    {
                    }
                }
                this.connect();
                return;
            }
            PublishCB pbCB = null;

            if (qos > 0)
            {
                pbCB = new PublishCB(packet, this, qos, false);
            }
            mqttConnection.publish(this.topic + HikeConstants.PUBLISH_TOPIC,
                                   packet.Message, (QoS)qos == 0 ? QoS.AT_MOST_ONCE : QoS.AT_LEAST_ONCE,
                                   pbCB);
        }
Пример #3
0
        public void mqttPublishToServer(JObject json, int qos)
        {
            JToken data;

            json.TryGetValue(HikeConstants.TYPE, out data);
            string objType = data.ToString();

            json.TryGetValue(HikeConstants.DATA, out data);
            JObject dataObj;
            long    msgId;

            if (objType == NetworkManager.MESSAGE || objType == NetworkManager.INVITE)
            {
                dataObj = JObject.FromObject(data);
                JToken messageIdToken;
                dataObj.TryGetValue("i", out messageIdToken);
                msgId = Convert.ToInt64(messageIdToken.ToString());
            }
            else
            {
                msgId = -1;
            }
            String msgToPublish = json.ToString(Newtonsoft.Json.Formatting.None);

            byte[]     byteData = Encoding.UTF8.GetBytes(msgToPublish);
            HikePacket packet   = new HikePacket(msgId, byteData, TimeUtils.getCurrentTimeTicks());

            send(packet, qos);
        }
Пример #4
0
 public static void addSentMessage(HikePacket packet)
 {
     if (packet.Message != null && packet.Message.Length < 8000)
     {
         lock (lockObj)
         {
             try
             {
                 HikePacket mqttMessage = new HikePacket(packet.MessageId, packet.Message, packet.Timestamp);
                 using (HikeMqttPersistenceDb context = new HikeMqttPersistenceDb(App.MqttDBConnectionstring))
                 {
                     context.mqttMessages.InsertOnSubmit(mqttMessage);
                     context.SubmitChanges();
                 }
             }
             catch (Exception e)
             {
                 Debug.WriteLine("Failed to add unsent packet with id :: " + packet.MessageId);
             }
         }
     }
     //TODO update observable list
 }