Exemplo n.º 1
0
        /// <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();
            }
        }
Exemplo n.º 2
0
 public MQTopicCallBack(MQTopic aTopic, TopicSubscribeCallBack aTopicSubscribeCallBack)
 {
     _topic = aTopic;
     _topicSubscribeCallBack = aTopicSubscribeCallBack;
 }
Exemplo n.º 3
0
        /// <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);
            }
        }