예제 #1
0
        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);
        }
예제 #2
0
        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));
        }
예제 #3
0
 public ResponeCommMessage HandleEvent(ReplayCommMessage msg)
 {
     GotClientToServerMsg(msg);
     return(new ResponeCommMessage(msg.UserId, msg.SessionId, false, msg));
 }