using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using Umbraco.Core;
using Umbraco.Core.Cache;
using Umbraco.Core.Configuration.Models;
using Umbraco.Core.Hosting;
using Umbraco.Core.Logging;
using Umbraco.Core.Persistence.Dtos;
using Umbraco.Core.Scoping;
using Umbraco.Core.Sync;
namespace Umbraco.Web
{
///
/// An implementation that works by storing messages in the database.
///
///
/// This binds to appropriate umbraco events in order to trigger the Boot(), Sync() & FlushBatch() calls
///
public class BatchedDatabaseServerMessenger : DatabaseServerMessenger
{
private readonly IRequestCache _requestCache;
private readonly IRequestAccessor _requestAccessor;
///
/// Initializes a new instance of the class.
///
public BatchedDatabaseServerMessenger(
IMainDom mainDom,
IScopeProvider scopeProvider,
IProfilingLogger proflog,
ILogger logger,
IServerRegistrar serverRegistrar,
DatabaseServerMessengerCallbacks callbacks,
IHostingEnvironment hostingEnvironment,
CacheRefresherCollection cacheRefreshers,
IRequestCache requestCache,
IRequestAccessor requestAccessor,
IOptions globalSettings)
: base(mainDom, scopeProvider, proflog, logger, serverRegistrar, true, callbacks, hostingEnvironment, cacheRefreshers, globalSettings)
{
_requestCache = requestCache;
_requestAccessor = requestAccessor;
}
protected override void DeliverRemote(ICacheRefresher refresher, MessageType messageType, IEnumerable