public void OnReserveEntityIdsResponse_should_add_received_responses_to_entity()
        {
            var entity = SetupTestEntity();

            var emptyRequest = new WorldCommands.ReserveEntityIds.Request();
            var context      = "Some context";

            reserveEntityIdsStorage.CommandRequestsInFlight.Add(TestCommandRequestId,
                                                                new CommandRequestStore <WorldCommands.ReserveEntityIds.Request>(entity,
                                                                                                                                 emptyRequest, context, TestCommandRequestId));

            using (var wrappedOp = WorkerOpFactory.CreateReserveEntityIdsResponseOp(TestCommandRequestId))
            {
                receiveSystem.OnReserveEntityIdsResponse(wrappedOp.Op);

                Assert.IsTrue(entityManager.HasComponent <WorldCommands.ReserveEntityIds.CommandResponses>(entity));

                var responses = entityManager.GetComponentData <WorldCommands.ReserveEntityIds.CommandResponses>(entity);

                var count = 0;
                Assert.DoesNotThrow(() => { count = responses.Responses.Count; });
                Assert.AreEqual(1, count);

                var response = responses.Responses[0];

                Assert.AreEqual(emptyRequest, response.RequestPayload);
                Assert.AreEqual(context, response.Context);
                Assert.AreEqual(TestCommandRequestId, response.RequestId);
                Assert.AreEqual(wrappedOp.Op.StatusCode, response.StatusCode);
                Assert.AreEqual(wrappedOp.Op.Message, response.Message);
                Assert.AreEqual(wrappedOp.Op.FirstEntityId, response.FirstEntityId);
                Assert.AreEqual(wrappedOp.Op.NumberOfEntityIds, response.NumberOfEntityIds);
            }
        }
Exemple #2
0
        private void OnSpawnCubeRequest(CubeSpawner.SpawnCube.ReceivedRequest requestReceived)
        {
            cubeSpawnerCommandRequestHandler.SendSpawnCubeResponse(
                new CubeSpawner.SpawnCube.Response(requestReceived.RequestId, new Empty()));

            var request = new WorldCommands.ReserveEntityIds.Request
            {
                NumberOfEntityIds = 1,
                Context           = this,
            };

            worldCommandRequestSender.SendReserveEntityIdsCommand(request, OnEntityIdsReserved);
        }
        private void OnSpawnUnitRequest(BaseUnitSpawner.SpawnUnit.ReceivedRequest receivedRequest)
        {
            baseUnitSpawnerCommandReceiver.SendSpawnUnitResponse(
                new BaseUnitSpawner.SpawnUnit.Response(receivedRequest.RequestId, new Empty()));

            var request = new WorldCommands.ReserveEntityIds.Request
            {
                NumberOfEntityIds = 1,
                Context           = this,
            };

            worldCommandSender.SendReserveEntityIdsCommand(request, OnEntityIdsReserved);
        }
Exemple #4
0
        private void RequestQueueRefill()
        {
            var requestCount = TargetEntityIdCount + queuedReservationCount - inFlightCount - entityIdQueue.Count;

            if (requestCount > 0)
            {
                requestCount   = Math.Max(requestCount, MinimumReservationCount);
                inFlightCount += requestCount;

                var reserveEntityIdsRequest = new WorldCommands.ReserveEntityIds.Request((uint)requestCount);
                var requestId = commandSystem.SendCommand(reserveEntityIdsRequest);
                requestIds.Add(requestId);
            }
        }
        public void OnReserveEntityIdsResponse_should_log_if_corresponding_entity_not_found()
        {
            var emptyRequest = new WorldCommands.ReserveEntityIds.Request();

            reserveEntityIdsStorage.CommandRequestsInFlight.Add(TestCommandRequestId,
                                                                new CommandRequestStore <WorldCommands.ReserveEntityIds.Request>(Entity.Null,
                                                                                                                                 emptyRequest, null, TestCommandRequestId));

            using (var wrappedOp = WorkerOpFactory.CreateReserveEntityIdsResponseOp(TestCommandRequestId))
            {
                using (var expectingScope = logDispatcher.EnterExpectingScope())
                {
                    expectingScope.Expect(LogType.Log, LoggingUtils.LoggerName, "Op");
                    receiveSystem.OnReserveEntityIdsResponse(wrappedOp.Op);
                }
            }
        }
Exemple #6
0
        public void SendReserveEntityIdsCommand(WorldCommands.ReserveEntityIds.Request request,
                                                Action <WorldCommands.ReserveEntityIds.ReceivedResponse> callback = null)
        {
            var requestId = commandSystem.SendCommand(request, entity);

            if (callback == null)
            {
                return;
            }

            Action <WorldCommands.ReserveEntityIds.ReceivedResponse> wrappedCallback = response =>
            {
                if (IsValid)
                {
                    callback(response);
                }
            };

            callbackSystem.RegisterCommandResponseCallback(requestId, wrappedCallback);
        }
 public void AddRequest(WorldCommands.ReserveEntityIds.Request request, Entity sendingEntity, CommandRequestId requestId)
 {
     reserveEntityIdsResponses.Add(
         new CommandRequestWithMetaData <WorldCommands.ReserveEntityIds.Request>(request, sendingEntity,
                                                                                 requestId));
 }