Example #1
0
        public static WrappedOp <ReserveEntityIdsResponseOp> CreateReserveEntityIdsResponseOp(long requestId)
        {
            var op = new ReserveEntityIdsResponseOp
            {
                RequestId = new RequestId <ReserveEntityIdsRequest>(requestId)
            };

            return(new WrappedOp <ReserveEntityIdsResponseOp>(op));
        }
                internal ReceivedResponse(ReserveEntityIdsResponseOp op, Entity sendingEntity, Request req, long requestId)
                {
                    SendingEntity     = sendingEntity;
                    StatusCode        = op.StatusCode;
                    Message           = op.Message;
                    NumberOfEntityIds = op.NumberOfEntityIds;
                    RequestPayload    = req;
                    Context           = req.Context;
                    RequestId         = requestId;

                    FirstEntityId = op.FirstEntityId.HasValue
                        ? new EntityId(op.FirstEntityId.Value)
                        : (EntityId?)null;
                }
Example #3
0
        private void CompleteCommand(ReserveEntityIdsResponseOp r)
        {
            if (!requestsToComplete.TryRemove(r.RequestId, out var completer))
            {
                return;
            }

            if (r.StatusCode == StatusCode.Success)
            {
                completer.Complete(new CommandResponses {
                    ReserveEntityIds = r
                });
            }
            else
            {
                completer.Fail(r.StatusCode, r.Message);
            }
        }
Example #4
0
        public void OnReserveEntityIdResponse(ReserveEntityIdsResponseOp op)
        {
            ReserveEntityIdsRequest request = requestIdToReserveEntityIdsRequest[op.RequestId.Id];

            requestIdToReserveEntityIdsRequest.Remove(op.RequestId.Id);

            Entity entity;

            if (!TryGetEntityFromEntityId(request.SenderEntityId, "ReserveEntityIds", out entity))
            {
                return;
            }

            var response = new ReserveEntityIdsResponse((CommandStatusCode)op.StatusCode, op.Message,
                                                        op.FirstEntityId.Value.Id, op.NumberOfEntityIds, request);

            view.AddCommandResponse(entity, response, reserveEntityIdsResponsesPool);
        }
        private void OnReserveEntityIdsResponse(ReserveEntityIdsResponseOp op)
        {
            if (!reserveEntityIdsStorage.CommandRequestsInFlight.TryGetValue(op.RequestId.Id, out var requestBundle))
            {
                worker.LogDispatcher.HandleLog(LogType.Error, new LogEvent(RequestIdNotFound)
                                               .WithField(LoggingUtils.LoggerName, LoggerName)
                                               .WithField("RequestId", op.RequestId.Id)
                                               .WithField("Command Type", "ReserveEntityIds"));
                return;
            }

            var entity = requestBundle.Entity;

            reserveEntityIdsStorage.CommandRequestsInFlight.Remove(op.RequestId.Id);

            if (!EntityManager.Exists(entity))
            {
                worker.LogDispatcher.HandleLog(LogType.Log, new LogEvent(EntityNotFound)
                                               .WithField(LoggingUtils.LoggerName, LoggerName)
                                               .WithField("Op", "ReserveEntityIdsResponseOp")
                                               );
                return;
            }

            List <WorldCommands.ReserveEntityIds.ReceivedResponse> responses;

            if (EntityManager.HasComponent <WorldCommands.ReserveEntityIds.CommandResponses>(entity))
            {
                responses = EntityManager.GetComponentData <WorldCommands.ReserveEntityIds.CommandResponses>(entity)
                            .Responses;
            }
            else
            {
                var data = new WorldCommands.ReserveEntityIds.CommandResponses
                {
                    Handle = WorldCommands.ReserveEntityIds.ResponsesProvider.Allocate(World)
                };
                responses = data.Responses = new List <WorldCommands.ReserveEntityIds.ReceivedResponse>();
                EntityManager.AddComponentData(entity, data);
            }

            responses.Add(
                new WorldCommands.ReserveEntityIds.ReceivedResponse(op, requestBundle.Request, requestBundle.Context));
        }
Example #6
0
 private void HandleReserveEntityIdsResponse(ReserveEntityIdsResponseOp op)
 {
     reserveEntityIdsResponseCallbacks.InvokeAll(op);
 }