コード例 #1
0
        private void _RegisterMessage(string messageName, IExtentionMetaInfo extention, MessageCallback callback)
        {
            if (!mSubscribeList.ContainsKey(messageName))
            {
                mSubscribeList.TryAdd(messageName, new LinkedList <MessageQueueItem> ());
            }

            LinkedList <MessageQueueItem> queue;

            if (mSubscribeList.TryGetValue(messageName, out queue))
            {
                string extentionName = "";
                if (extention != null)
                {
                    extentionName = extention.Name;
                }

                var r = from u in queue
                        where u.ExtentionName == extentionName && u.callback == callback
                        select u;

                if (r.Count() == 0)
                {
                    queue.AddLast(new MessageQueueItem {
                        callback      = callback,
                        ExtentionName = extentionName
                    });
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// 登録したコールバックを解除する
        /// </summary>
        /// <param name="messageName">メッセージ名</param>
        /// <param name="extention"></param>
        /// <param name="callback">解除するコールバック関数</param>
        public void UnegisterMessage(string messageName, IExtentionMetaInfo extention, MessageCallback callback)
        {
            if (!mSubscribeList.ContainsKey(messageName))
            {
                return;
            }
            LinkedList <MessageQueueItem> queue;

            if (mSubscribeList.TryGetValue(messageName, out queue))
            {
                var r = from u in queue
                        where u.ExtentionName == extention.Name
                        select u;
                foreach (var queueItem in r.ToArray())
                {
                    if (queueItem.callback == callback)
                    {
                        queue.Remove(queueItem);
                    }
                }
            }
        }
コード例 #3
0
 /// <summary>
 /// メッセージの呼び出しに対応するコールバックを登録する(拡張機能向け)
 /// </summary>
 public void RegisterMessage(string messageName, IExtentionMetaInfo extention, MessageCallback callback)
 {
     _RegisterMessage(messageName, extention, callback);
 }