/// <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())); }
///<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); }
/// <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)); }
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; }
private bool IsValidOptions(PublishingOptions options) { if (options != null) { return(true); } Log.Warn("Scheduled publishing options item not found", this); return(false); }
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); } }
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; } }
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); } }
/// <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)); }
/// <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)); }
/// <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)); }
public void SetPublisher(IPublisher publisher, IElementDef objectType, PublishingOptions options) { // TODO: Add TestZone.SetPublisher implementation }
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); }