コード例 #1
0
        private void MqttOnMessageReceive(object sender, MqttMsgPublishEventArgs e)
        {
            RtTagMqtt[] tags;
            IRtMessage  msg = RtMessage.Create(e.Topic, RtValue.Create(e.Message), e);

            lock (rtTags)
            {
                tags = rtTags.Where(tt => tt.Topic == msg.Topic).ToArray();

                if (!extraTopics.Contains(e.Topic))
                {
                    extraTopics.Add(e.Topic);
                }
            }

            foreach (var tag in tags)
            {
                tag.RaiseOnUpdatedValue(msg.Value);
                RaiseOnUpdatedValue(tag);
            }

            if (autoAddExtraTopics && !tags.Any() && extraTopicsSbscribe.Any())
            {
                var tag = (RtTagMqtt)AddTag(e.Topic, e.Topic, null);
            }

            RaiseOnMessageReceive(msg);
        }
コード例 #2
0
 protected virtual void RaiseOnMessageReceive(IRtMessage message)
 {
     MessageReceived?.Invoke(this, message);
 }