Ejemplo n.º 1
0
        /// <summary>
        /// Асинхронно посылает сообщение.
        /// Для отправки необходимо указать метку сообщения, на основе которой строится маршрут сообщения.
        /// </summary>
        /// <param name="label">Метка посылаемого сообщения.</param>
        /// <param name="payload">Тело сообщения.</param>
        /// <param name="options">Параметры отправки сообщения.</param>
        /// <returns>Задача отправки сообщения.</returns>
        protected Task InternalSend(MessageLabel label, object payload, PublishingOptions options)
        {
            this.EnsureIsReady();

            return(this.GetSenderFor(label)
                   .Send(label, payload, options ?? new PublishingOptions()));
        }
Ejemplo n.º 2
0
 ///<summary>Sets the publisher for this context and object type</summary>
 ///<param name="publisher"></param>
 ///<param name="objectType"></param>
 ///<param name="options"></param>
 public void setPublisher(
     IPublisher publisher,
     IElementDef objectType,
     PublishingOptions options)
 {
     SetHandler(fPubs, publisher, objectType, options);
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Execute plugins requested by the user against an initialized logset.
        /// </summary>
        private PluginExecutionResult ExecutePlugins(LogsharkRequest request, RunInitializationResult initializationResult)
        {
            PublishingOptions publishingOptions = BuildPublishingOptions(request, initializationResult);
            var pluginExecutionRequest          = new PluginExecutionRequest(initializationResult, publishingOptions, request.PluginCustomArguments, request.RunId, request.PostgresDatabaseName);

            var pluginExecutor = new PluginExecutor(request.Configuration);

            return(pluginExecutor.ExecutePlugins(pluginExecutionRequest));
        }
Ejemplo n.º 4
0
 public PluginExecutionRequest(RunInitializationResult initializationResult, PublishingOptions publishingOptions, IDictionary <string, object> pluginArguments, string runId, string postgresDatabaseName)
 {
     LogsetHash           = initializationResult.LogsetHash;
     MongoDatabaseName    = initializationResult.LogsetHash;
     PluginArguments      = pluginArguments;
     PluginsToExecute     = initializationResult.PluginTypesToExecute;
     PostgresDatabaseName = postgresDatabaseName;
     PublishingOptions    = publishingOptions;
     RunId = runId;
 }
Ejemplo n.º 5
0
        private bool IsValidOptions(PublishingOptions options)
        {
            if (options != null)
            {
                return(true);
            }

            Log.Warn("Scheduled publishing options item not found", this);
            return(false);
        }
Ejemplo n.º 6
0
 public void SetPublisher(IPublisher publisher, IElementDef objectType, PublishingOptions options)
 {
     if (options == null)
     {
         options = new PublishingOptions();
     }
     foreach (SifContext context in options.SupportedContexts)
     {
         GetOrCreateContextMatrix(context).setPublisher(publisher, objectType, options);
     }
 }
Ejemplo n.º 7
0
        public void SetPublisher(IPublisher publisher,
                                 PublishingOptions provisioningOptions)
        {
            assertProvisioningOptions(provisioningOptions);

            if (publisher == null)
            {
                fPub     = null;
                fPubOpts = null;
            }
            else
            {
                fPub = publisher;
                if (provisioningOptions == null)
                {
                    provisioningOptions = new PublishingOptions();
                }
                fPubOpts = provisioningOptions;
            }
        }
Ejemplo n.º 8
0
        private void RunPublishingInterval(DateTime now, PublishingOptions options)
        {
            if (IsValidPublishingInterval(now, options.IntervalPublishingOptions))
            {
                if (IsValidIntervalTime(now, options.IntervalPublishingOptions))
                {
                    Log.Info("Running Interval Publishing for items:", this);
                    options.IntervalPublishingOptions.Items.ForEach(x => Log.Info($"{x.Paths.Path}", this));

                    Publish(options.IntervalPublishingOptions.Items);
                    UpdateLastPublishingDate(options.SitecoreItem, LastIntervalPublishing, now);
                }
                else
                {
                    Log.Info($"Current time: {now} has not met the next interval time: {options.IntervalPublishingOptions.PublishingInterval}", this);
                }
            }
            else
            {
                Log.Info("No valid publishing interval", this);
            }
        }
Ejemplo n.º 9
0
 /// <summary>
 /// Посылает сообщение.
 /// Метка сообщения вычисляется на основе типа отправляемого сообщения.
 /// </summary>
 /// <param name="payload">Тело сообщения.</param>
 /// <param name="options">Параметры отправки сообщения.</param>
 /// <typeparam name="T">Тип отправляемого сообщения.</typeparam>
 /// <returns>Задача отправки сообщения.</returns>
 public Task Emit <T>(T payload, PublishingOptions options = null) where T : class
 {
     return(this.Emit(this.Configuration.MessageLabelResolver.ResolveFrom <T>(), payload, options));
 }
Ejemplo n.º 10
0
        /// <summary>
        /// Посылает сообщение.
        /// Для отправки необходимо указать метку сообщения, на основе которой строится маршрут сообщения.
        /// </summary>
        /// <param name="label">Метка посылаемого сообщения.</param>
        /// <param name="payload">Тело сообщения.</param>
        /// <param name="options">Параметры отправки сообщения.</param>
        /// <typeparam name="T">Тип отправляемого сообщения.</typeparam>
        /// <returns>Задача отправки сообщения.</returns>
        public Task Emit <T>(MessageLabel label, T payload, PublishingOptions options = null) where T : class
        {
            EnsureCanSendUsing(label);

            return(this.InternalSend(label, payload, options));
        }
Ejemplo n.º 11
0
 /// <summary>
 /// Посылает сообщение.
 /// Для отправки необходимо указать метку сообщения, на основе которой строится маршрут сообщения.
 /// </summary>
 /// <param name="label">Метка посылаемого сообщения.</param>
 /// <param name="payload">Тело сообщения.</param>
 /// <param name="options">Параметры отправки сообщения.</param>
 /// <typeparam name="T">Тип отправляемого сообщения.</typeparam>
 /// <returns>Задача отправки сообщения.</returns>
 public Task Emit <T>(string label, T payload, PublishingOptions options = null) where T : class
 {
     return(this.Emit(label.ToMessageLabel(), payload, options));
 }
Ejemplo n.º 12
0
 public void SetPublisher(IPublisher publisher, IElementDef objectType, PublishingOptions options)
 {
     // TODO:  Add TestZone.SetPublisher implementation
 }
Ejemplo n.º 13
0
        public void SetPublisher(IPublisher publisher,
                                         PublishingOptions provisioningOptions)
        {
            assertProvisioningOptions(provisioningOptions);

            if (publisher == null)
            {
                fPub = null;
                fPubOpts = null;
            }
            else
            {
                fPub = publisher;
                if (provisioningOptions == null)
                {
                    provisioningOptions = new PublishingOptions();
                }
                fPubOpts = provisioningOptions;
            }
        }
Ejemplo n.º 14
0
        private PublishingOptions InitialiseSchedulingOptions(Item publishingOptionsItem)
        {
            if (publishingOptionsItem == null)
            {
                return(null);
            }

            var options = new PublishingOptions();

            try
            {
                options.SitecoreItem = publishingOptionsItem;

                // Interval Publishing

                options.IntervalPublishingOptions = new IntervalPublishingOptions
                {
                    EnablePublishingInterval =
                        SetBoolFromCheckbox(publishingOptionsItem.Fields[EnablePublishingInterval]),

                    LastPublishing =
                        string.IsNullOrWhiteSpace(publishingOptionsItem.Fields[LastIntervalPublishing].Value)
                            ? null
                            : (DateTime?)DateUtil.ParseDateTime(publishingOptionsItem.Fields[LastIntervalPublishing].Value, DateTime.Now),

                    StartIntervalTime =
                        publishingOptionsItem.Fields[StartIntervalTime].HasValue
                        ?
                        DateTime.ParseExact(
                            publishingOptionsItem.Fields[StartIntervalTime].Value,
                            PublishTimeFormat,
                            CultureInfo.InvariantCulture)
                        : DateTime.MinValue,

                    EndIntervalTime =
                        publishingOptionsItem.Fields[EndIntervalTime].HasValue
                        ?
                        DateTime.ParseExact(
                            publishingOptionsItem.Fields[EndIntervalTime].Value,
                            PublishTimeFormat,
                            CultureInfo.InvariantCulture)
                        : DateTime.MinValue,

                    PublishingInterval = publishingOptionsItem.Fields[PublishingInterval].HasValue
                        ? TimeSpan.FromMinutes(int.Parse(publishingOptionsItem.Fields[PublishingInterval].Value))
                        : TimeSpan.Zero
                };

                if (!string.IsNullOrEmpty(publishingOptionsItem.Fields[IntervalPublishingItems].Value))
                {
                    var db = Factory.GetDatabase(MasterDatabaseName);
                    var publishScheduleItemIds = publishingOptionsItem.Fields[IntervalPublishingItems].Value.Split('|');

                    foreach (var id in publishScheduleItemIds)
                    {
                        var item = db.GetItem(id);

                        if (item == null)
                        {
                            continue;
                        }
                        options.IntervalPublishingOptions.Items.Add(item);
                    }
                }


                // Scheduled Publishing

                options.ScheduledPublishingOptions = new ScheduledPublishingOptions
                {
                    EnablePublishingSchedule =
                        SetBoolFromCheckbox(publishingOptionsItem.Fields[EnablePublishingSchedule]),
                    LastPublishing = string.IsNullOrWhiteSpace(publishingOptionsItem.Fields[LastScheduledPublishing].Value)
                        ? null
                        : (DateTime?)(DateUtil.ParseDateTime(publishingOptionsItem.Fields[LastScheduledPublishing].Value, DateTime.Now)),
                    PublishTime = publishingOptionsItem.Fields[ScheduledPublishTime].HasValue
                        ? DateTime.ParseExact(publishingOptionsItem.Fields[ScheduledPublishTime].Value, PublishTimeFormat, CultureInfo.InvariantCulture)
                        : DateTime.MaxValue
                };

                if (!string.IsNullOrEmpty(publishingOptionsItem.Fields[ScheduledPublishingItems].Value))
                {
                    var db = Factory.GetDatabase(MasterDatabaseName);
                    var publishScheduleItemIds = publishingOptionsItem.Fields[ScheduledPublishingItems].Value.Split('|');
                    foreach (var id in publishScheduleItemIds)
                    {
                        var item = db.GetItem(id);

                        if (item == null)
                        {
                            continue;
                        }
                        options.ScheduledPublishingOptions.Items.Add(item);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error("Failed to initialise scheduled publishing options: " + ex.Message, this);
            }

            return(options);
        }