public void GetConnectionService_returns_alpha_locator_if_pit_and_login_token_are_present()
        {
            var args    = GetBaseArgs();
            var service = new CommandLineConnectionFlowInitializer(args).GetConnectionService();

            Assert.AreEqual(ConnectionService.Locator, service);
        }
        private async void Start()
        {
            var connParams = CreateConnectionParameters(WorkerType);

            var builder = new SpatialOSConnectionHandlerBuilder()
                          .SetConnectionParameters(connParams);

            if (!Application.isEditor)
            {
                var initializer = new CommandLineConnectionFlowInitializer();
                switch (initializer.GetConnectionService())
                {
                case ConnectionService.Receptionist:
                    builder.SetConnectionFlow(new ReceptionistFlow(CreateNewWorkerId(WorkerType), initializer));
                    break;

                case ConnectionService.Locator:
                    builder.SetConnectionFlow(new LocatorFlow(initializer));
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            else
            {
                builder.SetConnectionFlow(new ReceptionistFlow(CreateNewWorkerId(WorkerType)));
            }

            await Connect(builder, new ForwardingDispatcher()).ConfigureAwait(false);
        }
        protected virtual IConnectionHandlerBuilder GetConnectionHandlerBuilder()
        {
            IConnectionFlow connectionFlow;
            var             connectionParams = CreateConnectionParameters(WorkerUtils.UnityClient);
            var             workerId         = CreateNewWorkerId(WorkerUtils.UnityClient);

            if (Application.isEditor)
            {
                connectionFlow = new ReceptionistFlow(workerId);
            }
            else
            {
                var initializer = new CommandLineConnectionFlowInitializer();

                switch (initializer.GetConnectionService())
                {
                case ConnectionService.Receptionist:
                    connectionFlow = new ReceptionistFlow(workerId, initializer);
                    break;

                case ConnectionService.Locator:
                    connectionParams.Network.UseExternalIp = true;
                    connectionFlow = new LocatorFlow(initializer);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            return(new SpatialOSConnectionHandlerBuilder()
                   .SetConnectionFlow(connectionFlow)
                   .SetConnectionParameters(connectionParams));
        }
        public void Initialize_alpha_locator_flow_correctly()
        {
            var initializer = new CommandLineConnectionFlowInitializer(GetBaseArgs());
            var flow        = new LocatorFlow(initializer);

            Assert.AreEqual(GetBaseArgs()[RuntimeConfigNames.LocatorHost], flow.LocatorHost);
            Assert.AreEqual(GetBaseArgs()[RuntimeConfigNames.LoginToken], flow.LoginToken);
            Assert.AreEqual(GetBaseArgs()[RuntimeConfigNames.PlayerIdentityToken], flow.PlayerIdentityToken);
        }
        public void Initialize_receptionist_ignores_params_that_arent_there()
        {
            var initializer = new CommandLineConnectionFlowInitializer(new Dictionary <string, string>());
            var flow        = new ReceptionistFlow("a_worker_id", initializer);

            Assert.AreEqual(RuntimeConfigDefaults.ReceptionistHost, flow.ReceptionistHost);
            Assert.AreEqual(RuntimeConfigDefaults.ReceptionistPort, flow.ReceptionistPort);
            Assert.AreEqual("a_worker_id", flow.WorkerId);
        }
        public void Initialize_receptionist_flow_correctly()
        {
            var initializer = new CommandLineConnectionFlowInitializer(GetBaseArgs());
            var flow        = new ReceptionistFlow("a_worker_id", initializer);

            Assert.AreEqual(GetBaseArgs()[RuntimeConfigNames.ReceptionistHost], flow.ReceptionistHost);
            Assert.AreEqual(1337, flow.ReceptionistPort);
            Assert.AreEqual(GetBaseArgs()[RuntimeConfigNames.WorkerId], flow.WorkerId);
        }
        protected override IConnectionHandlerBuilder GetConnectionHandlerBuilder()
        {
            var connectionParams = new ConnectionParameters
            {
                DefaultComponentVtable = new ComponentVtable(),
                WorkerType             = WorkerUtils.UnityClient
            };

            var builder = new SpatialOSConnectionHandlerBuilder()
                          .SetConnectionParameters(connectionParams);

            if (UseSessionFlow)
            {
                connectionParams.Network.UseExternalIp = true;
                builder.SetConnectionFlow(new ChosenDeploymentAlphaLocatorFlow(deployment,
                                                                               new SessionConnectionFlowInitializer(new CommandLineConnectionFlowInitializer())));
            }
            else if (Application.isEditor)
            {
                builder.SetConnectionFlow(new ReceptionistFlow(CreateNewWorkerId(WorkerUtils.UnityClient)));
            }
            else
            {
                var initializer = new CommandLineConnectionFlowInitializer();

                switch (initializer.GetConnectionService())
                {
                case ConnectionService.Receptionist:
                    var rec = new ReceptionistFlow(CreateNewWorkerId(WorkerUtils.UnityClient),
                                                   initializer);

                    connectionParams.Network.UseExternalIp = true;
                    rec.ReceptionistHost = "192.168.20.238";

                    builder.SetConnectionFlow(rec);
                    break;

                case ConnectionService.Locator:
                    connectionParams.Network.UseExternalIp = true;
                    var loc = new LocatorFlow(initializer);
                    builder.SetConnectionFlow(loc);
                    break;

                case ConnectionService.AlphaLocator:
                    connectionParams.Network.UseExternalIp = true;
                    builder.SetConnectionFlow(new AlphaLocatorFlow(initializer));
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            return(builder);
        }
        public void Initialize_locator_sets_dev_auth_flow_correctly()
        {
            {
                var initializer = new CommandLineConnectionFlowInitializer(GetBaseArgs());
                var flow        = new LocatorFlow(initializer);
                Assert.IsFalse(flow.UseDevAuthFlow);
            }

            {
                var args = GetBaseArgs();
                args.Remove(RuntimeConfigNames.PlayerIdentityToken);
                args.Remove(RuntimeConfigNames.LoginToken);

                var initializer = new CommandLineConnectionFlowInitializer(args);
                var flow        = new LocatorFlow(initializer);
                Assert.IsTrue(flow.UseDevAuthFlow);
            }
        }
Ejemplo n.º 9
0
        private async void Start()
        {
            Application.targetFrameRate = 60;

            var connParams = CreateConnectionParameters(WorkerUtils.UnityClient);

            connParams.Network.UseExternalIp = UseExternalIp;

            var builder = new SpatialOSConnectionHandlerBuilder()
                          .SetConnectionParameters(connParams);

            if (!Application.isEditor)
            {
                var initializer = new CommandLineConnectionFlowInitializer();
                switch (initializer.GetConnectionService())
                {
                case ConnectionService.Receptionist:
                    builder.SetConnectionFlow(new ReceptionistFlow(CreateNewWorkerId(WorkerUtils.UnityClient), initializer));
                    break;

                case ConnectionService.Locator:
                    builder.SetConnectionFlow(new LocatorFlow(initializer));
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            else
            {
                builder.SetConnectionFlow(new ReceptionistFlow(CreateNewWorkerId(WorkerUtils.UnityClient)));
            }

            await Connect(builder, new ForwardingDispatcher());

            if (level == null)
            {
                return;
            }

            levelInstance = Instantiate(level, transform.position, transform.rotation);
        }
        private async void Start()
        {
            Application.targetFrameRate = 60;

            var connParams = CreateConnectionParameters(WorkerUtils.UnityClient);

            connParams.Network.UseExternalIp  = UseExternalIp;
            connParams.Network.ConnectionType = NetworkConnectionType.RakNet;

            var builder = new SpatialOSConnectionHandlerBuilder()
                          .SetConnectionParameters(connParams);

            if (!Application.isEditor)
            {
                var initializer = new CommandLineConnectionFlowInitializer();
                switch (initializer.GetConnectionService())
                {
                case ConnectionService.Receptionist:
                    builder.SetConnectionFlow(new ReceptionistFlow(CreateNewWorkerId(WorkerUtils.UnityClient), initializer));
                    break;

                case ConnectionService.Locator:
                    builder.SetConnectionFlow(new LocatorFlow(initializer));
                    break;

                case ConnectionService.AlphaLocator:
                    builder.SetConnectionFlow(new AlphaLocatorFlow(initializer));
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            else
            {
                builder.SetConnectionFlow(new ReceptionistFlow(CreateNewWorkerId(WorkerUtils.UnityClient)));
            }

            await Connect(builder, new ForwardingDispatcher()).ConfigureAwait(false);
        }
        public void GetConnectionService_falls_back_to_receptionist()
        {
            var service = new CommandLineConnectionFlowInitializer(new Dictionary <string, string>()).GetConnectionService();

            Assert.AreEqual(ConnectionService.Receptionist, service);
        }