コード例 #1
0
        public void MessageReceived(Message message)
        {
            var identifiedMsg = (IdentifiedMessage)message;

            if (identifiedMsg.resp)
            {
                Action <Message> callback;
                if (_callbackDict.TryGetValue(identifiedMsg.guid, out callback))
                {
                    callback(identifiedMsg.innerMessage);
                    _callbackDict.Remove(identifiedMsg.guid);
                }
            }
            else
            {
                Message         resp = null;
                IRequestHandler handler;
                if (_reqHandlerDict.TryGetValue(identifiedMsg.InnerMsgType, out handler))
                {
                    resp = handler.MakeResponse(identifiedMsg.innerMessage);
                }
                var respWrapper = new IdentifiedMessage()
                {
                    innerMessage = resp, guid = identifiedMsg.guid, resp = true
                };
                SendMessage(respWrapper);
            }
        }
コード例 #2
0
        public void Request(Message message, Action <Message> callback)
        {
            var identifiedMsg = new IdentifiedMessage(message);

            while (_callbackDict.ContainsKey(identifiedMsg.guid))
            {
                identifiedMsg.guid = Guid.NewGuid();
            }
            _callbackDict.Add(identifiedMsg.guid, callback);
            SendMessage(identifiedMsg);
        }