/// <summary> /// ע�������б� /// </summary> /// <param name="aList">�����б�</param> /// <param name="aTopicSubscribeCallBack">���ⶩ�Ļص�����</param> public void RegisterTopic(List<MQTopic> aList, TopicSubscribeCallBack aTopicSubscribeCallBack) { // ��ͣ�ã���ע������ȽϿ� Connection.Stop(); try { // ������������ foreach (MQTopic topic in aList) { RegisterTopic(topic, aTopicSubscribeCallBack); } // ɾ����ע�ᵫ�б���û�е����� lock (_callbackDict) { List<MQTopic> list = new List<MQTopic>(); foreach (MQTopicCallBack mqTopicCallBack in _callbackDict.Values) { if (!aList.Contains(mqTopicCallBack.Topic)) { list.Add(mqTopicCallBack.Topic); } } // ���б����Ƴ����� foreach (MQTopic topic in list) { UnRegisterTopic(topic); } list.Clear(); } } finally { Connection.Start(); } }
public MQTopicCallBack(MQTopic aTopic, TopicSubscribeCallBack aTopicSubscribeCallBack) { _topic = aTopic; _topicSubscribeCallBack = aTopicSubscribeCallBack; }
/// <summary> /// ע�ᶩ������ /// </summary> /// <param name="aTopic">����</param> /// <param name="aTopicSubscribeCallBack">���ⶩ�Ļص�����</param> public void RegisterTopic(MQTopic aTopic, TopicSubscribeCallBack aTopicSubscribeCallBack) { if (String.IsNullOrEmpty(aTopic.TopicName)) return; MQTopicCallBack mqTopicCallBack = null; lock (_callbackDict) { if (_callbackDict.ContainsKey(aTopic.TopicName)) return; mqTopicCallBack = new MQTopicCallBack(aTopic, aTopicSubscribeCallBack); _callbackDict.Add(aTopic.TopicName, mqTopicCallBack); } if (mqTopicCallBack != null) { RegisterMessageListener(String.Format("topic://{0}", aTopic.TopicName), mqTopicCallBack.OnMessageListener, String.Empty); } }