private void ValidateRetentionPolicy() { IConfigurationSession session = base.DataSession as IConfigurationSession; session.SessionSettings.IsSharedConfigChecked = true; MultiValuedProperty <ADObjectId> first = (MultiValuedProperty <ADObjectId>) this.DataObject[RetentionPolicyTagSchema.PolicyIds]; RetentionPolicy[] array = (from x in first select session.Read <RetentionPolicy>(x) into x where x != null select x).ToArray <RetentionPolicy>(); PresentationRetentionPolicyTag[] second = new PresentationRetentionPolicyTag[] { new PresentationRetentionPolicyTag(this.DataObject, this.contentSettingsObject) }; foreach (RetentionPolicy retentionPolicy in array) { PresentationRetentionPolicyTag[] retentionTags = (from x in retentionPolicy.RetentionPolicyTagLinks where !x.Equals(this.DataObject.Id) select session.Read <RetentionPolicyTag>(x) into x select new PresentationRetentionPolicyTag(x)).Concat(second).ToArray <PresentationRetentionPolicyTag>(); if (this.DataObject.Type == ElcFolderType.All) { RetentionPolicyValidator.ValicateDefaultTags(retentionPolicy, retentionTags, new Task.TaskErrorLoggingDelegate(base.WriteError)); } RetentionPolicyValidator.ValidateSystemFolderTags(retentionPolicy, retentionTags, new Task.TaskErrorLoggingDelegate(base.WriteError)); } }
static int Main(string[] args) { AppDomain.CurrentDomain.UnhandledException += AppDomainUnhandledExceptionHandler; var serviceDisplayName = "Statsify Aggregator v" + Application.Version; Log.Info("starting up " + serviceDisplayName); // // Validate configuration on startup var configurationManager = ConfigurationManager.Instance; foreach (StoreConfigurationElement storage in configurationManager.Configuration.Storage) { var retentionPolicy = new RetentionPolicy(storage.Retentions); RetentionPolicyValidator.EnsureRetentionPolicyValid(retentionPolicy); } // foreach Core.Expressions.Environment.RegisterFunctions(typeof(Functions)); var host = HostFactory.New(x => { x.Service <StatsifyAggregatorService>(sc => { sc.ConstructUsing(hostSettings => new StatsifyAggregatorService(hostSettings, configurationManager)); sc.WhenStarted((service, hostControl) => service.Start(hostControl)); sc.WhenStopped((service, hostControl) => service.Stop(hostControl)); }); x.SetServiceName("statsify-aggregator"); x.SetDisplayName(serviceDisplayName); x.SetDescription("Listens to StatsD-compatible UDP datagrams and aggregates and stores metrics sent to it."); x.StartAutomaticallyDelayed(); x.RunAsLocalSystem(); x.UseNLog(); }); return((int)host.Run()); }