Ejemplo n.º 1
0
		public void MessageReceived(Message message) {
			var identifiedMsg = (IdentifiedMessage)message;
			if (identifiedMsg.resp) {
				if (_callbackDict.TryGetValue(identifiedMsg.guid, out Action<Message> callback)) {
					callback(identifiedMsg.innerMessage);
					_callbackDict.Remove(identifiedMsg.guid);
				}
			} else {
				Message resp = null;
				if (_reqHandlerDict.TryGetValue(identifiedMsg.InnerMsgType, out IRequestHandler handler)) {
					resp = handler.MakeResponse(identifiedMsg.innerMessage);
				}
				var respWrapper = new IdentifiedMessage() { innerMessage = resp, guid = identifiedMsg.guid, resp = true };
				SendMessage(respWrapper);
			}
		}
Ejemplo n.º 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);
		}