コード例 #1
0
ファイル: TestParticipant.cs プロジェクト: MoysheBenRabi/setp
        public TestParticipant(
            string serverAddress,
            int serverPort,
            Guid bubbleId,
            string location,
            string identityProviderUrl,
            string participantName,
            string participantPassphrase
            )
        {
            this.serverAddress         = serverAddress;
            this.serverPort            = serverPort;
            this.bubbleId              = bubbleId;
            this.location              = location;
            this.identityProviderUrl   = identityProviderUrl;
            this.participantName       = participantName;
            this.participantPassphrase = participantPassphrase;
            String programName         = "Tank Test Participant";
            byte   programMajorVersion = 0;
            byte   programMinorVersion = 1;

            client = new MxpClient(programName, programMajorVersion, programMinorVersion);

            Random random = new Random();

            for (int i = 0; i < NumberOfObjects; i++)
            {
                Objects[i]                      = new TestObject();
                Objects[i].ObjectId             = Guid.NewGuid();
                Objects[i].ObjectName           = "Test Object " + i;
                Objects[i].OrbitRadius          = (float)(random.NextDouble() * 200) + 10;
                Objects[i].OrbitAngle           = (float)(random.NextDouble() * 2 * Math.PI);
                Objects[i].OrbitAngularVelocity = (float)(random.NextDouble() * 2 * Math.PI / 8);
            }
        }
コード例 #2
0
ファイル: DeckEngine.cs プロジェクト: MoysheBenRabi/setp
        public DeckEngine(
            string serverAddress,
            int serverPort,
            Guid bubbleId,
            string location,
            string identityProviderUrl,
            string participantName,
            string participantPassphrase,
            Deck deck
            )
        {
            this.serverAddress         = serverAddress;
            this.serverPort            = serverPort;
            this.bubbleId              = bubbleId;
            this.Location              = location;
            this.identityProviderUrl   = identityProviderUrl;
            this.participantName       = participantName;
            this.participantPassphrase = participantPassphrase;
            String programName         = "MX XNA Deck";
            byte   programMajorVersion = 0;
            byte   programMinorVersion = 1;

            Client = new MxpClient(programName, programMajorVersion, programMinorVersion);
            Client.ServerMessageReceived += OnMessage;
            Client.ServerDisconnected    += OnDisconnected;
            Bubble          = new DeckBubble();
            Bubble.BubbleId = this.bubbleId;
            this.deck       = deck;
        }
コード例 #3
0
 public CloudView(float viewRange, string programName, byte programMajorVersion, byte programMinorVersion)
 {
     client                       = new MxpClient(programName, programMajorVersion, programMinorVersion);
     cloudCache                   = new CloudCache(Guid.Empty, viewRange, new TimeSpan(0, 0, 10, 0));
     this.viewRange               = viewRange;
     this.programName             = programName;
     this.programMajorVersion     = programMajorVersion;
     this.programMinorVersion     = programMinorVersion;
     client.ServerMessageReceived = OnServerMessageReceived;
 }
コード例 #4
0
        public void ClientServerConnectionFailure()
        {
            Guid bubbleGuid = new Guid();

            MxpServer server = new MxpServer("http://test.cloud.url", MxpConstants.DefaultHubPort, "TestServerProgram", 1, 2);

            MxpBubble bubble = new MxpBubble(Guid.NewGuid(), "TestBubbleName", 100, 1000);

            server.AddBubble(bubble);

            bubble.ParticipantConnectAuthorize += delegate(Session session, JoinRequestMessage message, out Guid participantId, out Guid avatarId)
            {
                participantId = Guid.Empty;
                avatarId      = Guid.Empty;
                return(false);
            };
            server.Startup(false);

            MxpClient client = new MxpClient("TestClientProgram", 1, 2);

            client.ServerMessageReceived += delegate(Message message)
            {
            };

            client.Connect("127.0.0.1", MxpConstants.DefaultHubPort, bubbleGuid, "", "TestLocation", "TestIdentityProviderUrl", "TestUserName", "TestUserPassword", Guid.Empty, false);

            Thread.Sleep(100);

            server.Process();

            Thread.Sleep(100);

            client.Process();

            Assert.IsFalse(client.IsConnected);

            server.Shutdown();
        }
コード例 #5
0
        public void ClientServerThrottling()
        {
            Guid bubbleGuid = Guid.NewGuid();

            MxpServer server = new MxpServer("http://test.cloud.url", MxpConstants.DefaultHubPort, "TestServerProgram", 1, 2);

            MxpBubble bubble = new MxpBubble(bubbleGuid, "TestBubbleName", 100, 1000);

            server.AddBubble(bubble);

            Session serverSession = null;

            bubble.ParticipantConnectAuthorize += delegate(Session session, JoinRequestMessage message, out Guid participantId, out Guid avatarId
                                                           )
            {
                participantId = Guid.Empty;
                avatarId      = Guid.Empty;
                return(true);
            };

            bubble.ParticipantConnected += delegate(Session session, JoinRequestMessage message, Guid participantId, Guid avatarId)
            {
                serverSession = session;
            };

            server.Startup(false);

            MxpClient client = new MxpClient("TestClientProgram", 1, 2);

            client.ServerMessageReceived += delegate(Message message)
            {
            };

            client.Connect("127.0.0.1", MxpConstants.DefaultHubPort, bubbleGuid, "", "TestLocation", "TestIdentityProviderUrl", "TestUserName", "TestUserPassword", Guid.Empty, false);

            Thread.Sleep(100);

            server.Process();

            Assert.IsNotNull(serverSession);
            Assert.IsTrue(serverSession.IsConnected);

            Thread.Sleep(100);

            client.Process();

            Thread.Sleep(100);

            Assert.IsTrue(client.IsConnected);

            int loopCount       = 100;
            int messagesPerLoop = 50;

            double[] transmitterSendRates    = new double[2 * loopCount];
            double[] transmitterReceiveRates = new double[2 * loopCount];
            double[] sessionSendRates        = new double[2 * loopCount];

            int messagesReceived = 0;

            bubble.ParticipantMessageReceived += delegate(Session session, Message message)
            {
                messagesReceived++;
            };

            for (int i = 0; i < loopCount; i++)
            {
                for (int j = 0; j < messagesPerLoop; j++)
                {
                    MovementEventMessage originalMessage = new MovementEventMessage();
                    originalMessage.ObjectIndex   = 1;
                    originalMessage.Location.X    = 1; originalMessage.Location.Y = 2; originalMessage.Location.Z = 3;
                    originalMessage.Orientation.X = 10; originalMessage.Orientation.Y = 11; originalMessage.Orientation.Z = 12; originalMessage.Orientation.W = 13;

                    client.Send(originalMessage);
                }

                client.Process();
                Thread.Sleep(8);
                server.Process();
                Thread.Sleep(8);
                transmitterSendRates[i]    = client.SendRate;
                transmitterReceiveRates[i] = server.ReceiveRate;
                sessionSendRates[i]        = client.SessionSendRate;
            }

            for (int i = 0; i < loopCount; i++)
            {
                client.Process();
                server.Process();
                Thread.Sleep(16);
                transmitterSendRates[loopCount + i]    = client.SendRate;
                transmitterReceiveRates[loopCount + i] = server.ReceiveRate;
                sessionSendRates[loopCount + i]        = client.SessionSendRate;
            }

            Assert.IsTrue(loopCount * messagesPerLoop >= messagesReceived);

            server.Shutdown();
        }