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); }
protected virtual void RaiseOnMessageReceive(IRtMessage message) { MessageReceived?.Invoke(this, message); }