public LobbyHandler(string ipPort, string appName, string lobbyName) { this.ipPort = ipPort; this.appName = appName; this.lobbyName = lobbyName; this.peer = new LiteLobbyPeer(this, false); this.peer.Connect(this.ipPort, this.appName); }
public void JoinAndJoin() { var peerOne = new DummyPeer { SessionId = "#1" }; var peerTwo = new DummyPeer { SessionId = "#2" }; var peerLobby = new DummyPeer { SessionId = "#L" }; var litePeerOne = new LiteLobbyPeer(peerOne.Protocol, peerOne); var litePeerTwo = new LiteLobbyPeer(peerTwo.Protocol, peerTwo); var litePeerLobby = new LiteLobbyPeer(peerLobby.Protocol, peerLobby); try { // peer lobby: join OperationRequest request = GetJoinLobbyRequest(); PeerHelper.InvokeOnOperationRequest(litePeerLobby, request, new SendParameters()); Assert.IsTrue(peerLobby.WaitForNextResponse(WaitTimeout)); List <OperationResponse> responseList = peerLobby.GetResponseList(); Assert.AreEqual(1, responseList.Count); // peer lobby: receive lobby games Assert.IsTrue(peerLobby.WaitForNextEvent(WaitTimeout)); List <EventData> eventList = peerLobby.GetEventList(); Assert.AreEqual(1, eventList.Count); EventData eventData = eventList[0]; Assert.AreEqual((byte)LiteLobbyEventCode.GameList, eventData.Code); // peer 1: join request = GetJoinRequest(); PeerHelper.InvokeOnOperationRequest(litePeerOne, request, new SendParameters()); Assert.IsTrue(peerOne.WaitForNextResponse(WaitTimeout)); responseList = peerOne.GetResponseList(); Assert.AreEqual(1, responseList.Count); OperationResponse response = responseList[0]; Assert.AreEqual(1, response.Parameters[(byte)ParameterKey.ActorNr]); // peer 1: receive own join event Assert.IsTrue(peerOne.WaitForNextEvent(WaitTimeout)); eventList = peerOne.GetEventList(); Assert.AreEqual(1, eventList.Count); eventData = eventList[0]; Assert.AreEqual(LiteOpCode.Join, eventData.Code); Assert.AreEqual(1, eventData.Parameters[(byte)ParameterKey.ActorNr]); // peer lobby: wait for lobby update (all 2 sec) Assert.IsTrue(peerLobby.WaitForNextEvent(2000 + WaitTimeout)); eventList = peerLobby.GetEventList(); Assert.AreEqual(1, eventList.Count); eventData = eventList[0]; var games = (Hashtable)eventData.Parameters[(byte)ParameterKey.Data]; Assert.AreEqual(1, games.Count); Assert.AreEqual("1", games["testGame"]); // peer 2: join request = GetJoinRequest(); PeerHelper.InvokeOnOperationRequest(litePeerTwo, request, new SendParameters()); Assert.IsTrue(peerTwo.WaitForNextResponse(WaitTimeout)); responseList = peerTwo.GetResponseList(); Assert.AreEqual(1, responseList.Count); response = responseList[0]; Assert.AreEqual(2, response.Parameters[(byte)ParameterKey.ActorNr]); // peer 2: receive own join event Assert.IsTrue(peerTwo.WaitForNextEvent(WaitTimeout)); eventList = peerTwo.GetEventList(); Assert.AreEqual(1, eventList.Count); eventData = eventList[0]; Assert.AreEqual(LiteOpCode.Join, eventData.Code); Assert.AreEqual(2, eventData.Parameters[(byte)ParameterKey.ActorNr]); // peer 1: receive join event of peer 2 Assert.IsTrue(peerOne.WaitForNextEvent(WaitTimeout)); eventList = peerOne.GetEventList(); Assert.AreEqual(1, eventList.Count); eventData = eventList[0]; Assert.AreEqual(LiteOpCode.Join, eventData.Code); Assert.AreEqual(2, eventData.Parameters[(byte)ParameterKey.ActorNr]); // peer lobby: wait for lobby update (all 2 sec) Assert.IsTrue(peerLobby.WaitForNextEvent(2000 + WaitTimeout)); eventList = peerLobby.GetEventList(); Assert.AreEqual(1, eventList.Count); eventData = eventList[0]; games = (Hashtable)eventData.Parameters[(byte)ParameterKey.Data]; Assert.AreEqual(1, games.Count); Assert.AreEqual("2", games["testGame"]); // peer 2: join again request = GetJoinRequest(); PeerHelper.InvokeOnOperationRequest(litePeerTwo, request, new SendParameters()); Assert.IsTrue(peerTwo.WaitForNextResponse(WaitTimeout)); responseList = peerTwo.GetResponseList(); Assert.AreEqual(1, responseList.Count); // peer 2: do not receive own leave event, receive own join event Assert.IsTrue(peerTwo.WaitForNextEvent(WaitTimeout)); eventList = peerTwo.GetEventList(); Assert.AreEqual(1, eventList.Count); eventData = eventList[0]; Assert.AreEqual(LiteOpCode.Join, eventData.Code); Assert.AreEqual(3, eventData.Parameters[(byte)ParameterKey.ActorNr]); // peer 1: receive leave and event of peer 2 Assert.IsTrue(peerOne.WaitForNextEvent(WaitTimeout)); eventList = peerOne.GetEventList(); Assert.GreaterOrEqual(eventList.Count, 1); eventData = eventList[0]; Assert.AreEqual(LiteOpCode.Leave, eventData.Code); Assert.AreEqual(2, eventData.Parameters[(byte)ParameterKey.ActorNr]); if (eventList.Count == 1) { // waiting for join event Assert.IsTrue(peerOne.WaitForNextEvent(WaitTimeout)); eventList = peerOne.GetEventList(); Assert.AreEqual(1, eventList.Count); eventData = eventList[0]; } else { eventData = eventList[1]; } Assert.AreEqual(LiteOpCode.Join, eventData.Code); Assert.AreEqual(3, eventData.Parameters[(byte)ParameterKey.ActorNr]); // peer lobby: wait for lobby update (all 2 sec) Assert.IsTrue(peerLobby.WaitForNextEvent(2000 + WaitTimeout)); eventList = peerLobby.GetEventList(); Assert.AreEqual(1, eventList.Count); eventData = eventList[0]; games = (Hashtable)eventData.Parameters[(byte)ParameterKey.Data]; Assert.AreEqual(1, games.Count); Assert.AreEqual("2", games["testGame"]); } finally { PeerHelper.SimulateDisconnect(litePeerOne); PeerHelper.SimulateDisconnect(litePeerTwo); PeerHelper.SimulateDisconnect(litePeerLobby); } }
public void JoinAndJoin() { var peerOne = new DummyPeer { SessionId = "#1" }; var peerTwo = new DummyPeer { SessionId = "#2" }; var peerLobby = new DummyPeer { SessionId = "#L" }; var litePeerOne = new LiteLobbyPeer(peerOne.Protocol, peerOne); var litePeerTwo = new LiteLobbyPeer(peerTwo.Protocol, peerTwo); var litePeerLobby = new LiteLobbyPeer(peerLobby.Protocol, peerLobby); try { // peer lobby: join OperationRequest request = GetJoinLobbyRequest(); PeerHelper.InvokeOnOperationRequest(litePeerLobby, request, new SendParameters()); Assert.IsTrue(peerLobby.WaitForNextResponse(WaitTimeout)); List<OperationResponse> responseList = peerLobby.GetResponseList(); Assert.AreEqual(1, responseList.Count); // peer lobby: receive lobby games Assert.IsTrue(peerLobby.WaitForNextEvent(WaitTimeout)); List<EventData> eventList = peerLobby.GetEventList(); Assert.AreEqual(1, eventList.Count); EventData eventData = eventList[0]; Assert.AreEqual((byte)LiteLobbyEventCode.GameList, eventData.Code); // peer 1: join request = GetJoinRequest(); PeerHelper.InvokeOnOperationRequest(litePeerOne, request, new SendParameters()); Assert.IsTrue(peerOne.WaitForNextResponse(WaitTimeout)); responseList = peerOne.GetResponseList(); Assert.AreEqual(1, responseList.Count); OperationResponse response = responseList[0]; Assert.AreEqual(1, response.Parameters[(byte)ParameterKey.ActorNr]); // peer 1: receive own join event Assert.IsTrue(peerOne.WaitForNextEvent(WaitTimeout)); eventList = peerOne.GetEventList(); Assert.AreEqual(1, eventList.Count); eventData = eventList[0]; Assert.AreEqual(LiteOpCode.Join, eventData.Code); Assert.AreEqual(1, eventData.Parameters[(byte)ParameterKey.ActorNr]); // peer lobby: wait for lobby update (all 2 sec) Assert.IsTrue(peerLobby.WaitForNextEvent(2000 + WaitTimeout)); eventList = peerLobby.GetEventList(); Assert.AreEqual(1, eventList.Count); eventData = eventList[0]; var games = (Hashtable)eventData.Parameters[(byte)ParameterKey.Data]; Assert.AreEqual(1, games.Count); Assert.AreEqual("1", games["testGame"]); // peer 2: join request = GetJoinRequest(); PeerHelper.InvokeOnOperationRequest(litePeerTwo, request, new SendParameters()); Assert.IsTrue(peerTwo.WaitForNextResponse(WaitTimeout)); responseList = peerTwo.GetResponseList(); Assert.AreEqual(1, responseList.Count); response = responseList[0]; Assert.AreEqual(2, response.Parameters[(byte)ParameterKey.ActorNr]); // peer 2: receive own join event Assert.IsTrue(peerTwo.WaitForNextEvent(WaitTimeout)); eventList = peerTwo.GetEventList(); Assert.AreEqual(1, eventList.Count); eventData = eventList[0]; Assert.AreEqual(LiteOpCode.Join, eventData.Code); Assert.AreEqual(2, eventData.Parameters[(byte)ParameterKey.ActorNr]); // peer 1: receive join event of peer 2 Assert.IsTrue(peerOne.WaitForNextEvent(WaitTimeout)); eventList = peerOne.GetEventList(); Assert.AreEqual(1, eventList.Count); eventData = eventList[0]; Assert.AreEqual(LiteOpCode.Join, eventData.Code); Assert.AreEqual(2, eventData.Parameters[(byte)ParameterKey.ActorNr]); // peer lobby: wait for lobby update (all 2 sec) Assert.IsTrue(peerLobby.WaitForNextEvent(2000 + WaitTimeout)); eventList = peerLobby.GetEventList(); Assert.AreEqual(1, eventList.Count); eventData = eventList[0]; games = (Hashtable)eventData.Parameters[(byte)ParameterKey.Data]; Assert.AreEqual(1, games.Count); Assert.AreEqual("2", games["testGame"]); // peer 2: join again request = GetJoinRequest(); PeerHelper.InvokeOnOperationRequest(litePeerTwo, request, new SendParameters()); Assert.IsTrue(peerTwo.WaitForNextResponse(WaitTimeout)); responseList = peerTwo.GetResponseList(); Assert.AreEqual(1, responseList.Count); // peer 2: do not receive own leave event, receive own join event Assert.IsTrue(peerTwo.WaitForNextEvent(WaitTimeout)); eventList = peerTwo.GetEventList(); Assert.AreEqual(1, eventList.Count); eventData = eventList[0]; Assert.AreEqual(LiteOpCode.Join, eventData.Code); Assert.AreEqual(3, eventData.Parameters[(byte)ParameterKey.ActorNr]); // peer 1: receive leave and event of peer 2 Assert.IsTrue(peerOne.WaitForNextEvent(WaitTimeout)); eventList = peerOne.GetEventList(); Assert.GreaterOrEqual(eventList.Count, 1); eventData = eventList[0]; Assert.AreEqual(LiteOpCode.Leave, eventData.Code); Assert.AreEqual(2, eventData.Parameters[(byte)ParameterKey.ActorNr]); if (eventList.Count == 1) { // waiting for join event Assert.IsTrue(peerOne.WaitForNextEvent(WaitTimeout)); eventList = peerOne.GetEventList(); Assert.AreEqual(1, eventList.Count); eventData = eventList[0]; } else { eventData = eventList[1]; } Assert.AreEqual(LiteOpCode.Join, eventData.Code); Assert.AreEqual(3, eventData.Parameters[(byte)ParameterKey.ActorNr]); // peer lobby: wait for lobby update (all 2 sec) Assert.IsTrue(peerLobby.WaitForNextEvent(2000 + WaitTimeout)); eventList = peerLobby.GetEventList(); Assert.AreEqual(1, eventList.Count); eventData = eventList[0]; games = (Hashtable)eventData.Parameters[(byte)ParameterKey.Data]; Assert.AreEqual(1, games.Count); Assert.AreEqual("2", games["testGame"]); } finally { PeerHelper.SimulateDisconnect(litePeerOne); PeerHelper.SimulateDisconnect(litePeerTwo); PeerHelper.SimulateDisconnect(litePeerLobby); } }
/// <summary> /// Called by Unity on start. We create and connect a new LiteLobbyPeer. /// This makes the PhotonClient relatively autonomous. /// </summary> public virtual void Start() { this.Peer = new LiteLobbyPeer(this); this.Connect(); }