Example #1
0
        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));
            }
        }
Example #2
0
        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());
        }