Beispiel #1
0
        /// <summary>
        /// Data is assumed to be there, so use TryDelete
        /// </summary>
        /// <param name="service"></param>
        protected virtual void CleanupDataPostInitialization(IOrganizationService service)
        {
            var totalWatch = new Stopwatch();

            totalWatch.Start();

            var requests = new OrganizationRequestCollection();

            foreach (var id in EntityIds.Where(e => e.Key != "businessunit").SelectMany(entityType => entityType.Value))
            {
                requests.Add(new DeleteRequest {
                    Target = Entities[id]
                });
            }

            if (requests.Any())
            {
                var response = (ExecuteMultipleResponse)service.Execute(
                    new ExecuteMultipleRequest
                {
                    Settings = new ExecuteMultipleSettings
                    {
                        ContinueOnError = true,
                        ReturnResponses = false
                    },
                    Requests = requests,
                });

                ThrowExceptionForFaults(response, requests);

                totalWatch.Stop();
                Logger.WriteLine("Total Time to delete {0} entities of types {1} (ms): {2}",
                                 requests.Count,
                                 requests.Select(s => ((DeleteRequest)s).Target.LogicalName).Distinct().ToCsv(),
                                 totalWatch.ElapsedMilliseconds);
            }

            List <Guid> businessIds;

            if (!EntityIds.TryGetValue("businessunit", out businessIds))
            {
                return;
            }

            foreach (var id in businessIds)
            {
                service.DeleteBusinessUnit(id);
            }
        }
Beispiel #2
0
        public void ParseStream(MemoryStream memory)
        {
            var reader = new BinaryReader(memory);

            EntityId = (EntityIds)reader.ReadByte();
            WorldId  = reader.ReadInt16();

            entityToUse = null;
            if (reader.ReadBoolean()) //is this entity using another entity?
            {
                entityToUse = Game.EntManager.EntityContainer[reader.ReadInt16()];
            }

            Position = new Vector2f(reader.ReadSingle(), reader.ReadSingle());
            Health   = reader.ReadByte();

            ParseCustomStream(reader);
        }
Beispiel #3
0
        public override THandle GetOrAdd(TEntity entity)
        {
            if (entity == null)
            {
                throw new ArgumentNullException(nameof(entity));
            }

            if (_entityNames.TryGetValue(entity, out var existingEntity))
            {
                // if it's exactly the same exchange
                if (Entities.TryGetValue(entity, out existingEntity))
                {
                    return(existingEntity);
                }

                throw new ArgumentException($"The {TypeMetadataCache<TEntity>.ShortName} entity settings did not match the existing entity");
            }

            EntityIds.Add(entity.Id, entity);
            Entities.Add(entity, entity);
            _entityNames.Add(entity, entity);

            return(entity);
        }
Beispiel #4
0
 public IEnumerable <BaseEntity> GetEntities()
 {
     return(EntityIds.Select(entityId => BaseNetworkable.serverEntities.Find(entityId)).OfType <BaseEntity>());
 }
Beispiel #5
0
        public void ParseStream(MemoryStream memory)
        {
            var reader = new BinaryReader(memory);
            EntityId = (EntityIds)reader.ReadByte();
            WorldId = reader.ReadInt16();

            entityToUse = null;
            if (reader.ReadBoolean()) //is this entity using another entity?
            {
                entityToUse = Game.EntManager.EntityContainer[reader.ReadInt16()];
            }

            Position = new Vector2f(reader.ReadSingle(), reader.ReadSingle());
            Health = reader.ReadByte();

            ParseCustomStream(reader);
        }