public string AskForReplays(int roomId) { ReplayCommMessage toSend = new ReplayCommMessage(user.id, _sessionId, roomId); Tuple <CommunicationMessage, bool, bool, ResponeCommMessage> messageToList = new Tuple <CommunicationMessage, bool, bool, ResponeCommMessage>(toSend, false, false, new ResponeCommMessage(user.id)); MessagesSentObserver.Add(messageToList); _eventHandler.SendNewEvent(toSend); while ((MessagesSentObserver.Find(x => x.Item1.Equals(toSend))).Item2 == false) { var t = Task.Run(async delegate { await Task.Delay(10); }); t.Wait(); } bool toRet = (MessagesSentObserver.Find(x => x.Item1.Equals(toSend))).Item3; if (toRet) { ReplaySearchResponseCommMessage retMsg = (ReplaySearchResponseCommMessage)(MessagesSentObserver.Find(x => x.Item1.Equals(toSend))).Item4; return(retMsg.Replay); } MessagesSentObserver.Remove(messageToList); return(null); }
public ResponeCommMessage HandleEvent(ReplayCommMessage msg) { Tuple <bool, string> rep = _replayService.ShowFirstGameReplay(msg.RoomId, msg.UserId); return(new ReplaySearchResponseCommMessage(rep.Item2, msg.RoomId, msg.UserId, msg.SessionId, rep.Item1, msg)); }
public ResponeCommMessage HandleEvent(ReplayCommMessage msg) { GotClientToServerMsg(msg); return(new ResponeCommMessage(msg.UserId, msg.SessionId, false, msg)); }