diff --git a/src/Umbraco.Core/Sync/BatchedDatabaseServerMessenger.cs b/src/Umbraco.Core/Sync/BatchedDatabaseServerMessenger.cs
index 2928b55919..9eaf557170 100644
--- a/src/Umbraco.Core/Sync/BatchedDatabaseServerMessenger.cs
+++ b/src/Umbraco.Core/Sync/BatchedDatabaseServerMessenger.cs
@@ -7,11 +7,15 @@ using umbraco.interfaces;
namespace Umbraco.Core.Sync
{
- // abstract because it needs to be inherited by a class that will
- // - trigger FlushBatch() when appropriate
- // - trigger Boot() when appropriate
- // - trigger Sync() when appropriate
- //
+ ///
+ /// An that works by storing messages in the database.
+ ///
+ ///
+ /// abstract because it needs to be inherited by a class that will
+ /// - trigger FlushBatch() when appropriate
+ /// - trigger Boot() when appropriate
+ /// - trigger Sync() when appropriate
+ ///
public abstract class BatchedDatabaseServerMessenger : DatabaseServerMessenger
{
diff --git a/src/Umbraco.Core/Sync/BatchedWebServiceServerMessenger.cs b/src/Umbraco.Core/Sync/BatchedWebServiceServerMessenger.cs
index 57dd273f2a..9ab6d08455 100644
--- a/src/Umbraco.Core/Sync/BatchedWebServiceServerMessenger.cs
+++ b/src/Umbraco.Core/Sync/BatchedWebServiceServerMessenger.cs
@@ -5,52 +5,40 @@ using umbraco.interfaces;
namespace Umbraco.Core.Sync
{
- // abstract because it needs to be inherited by a class that will
- // - implement ProcessBatch()
- // - trigger FlushBatch() when appropriate
- //
+ ///
+ /// An that works by messaging servers via web services.
+ ///
+ ///
+ /// Abstract because it needs to be inherited by a class that will
+ /// - implement ProcessBatch()
+ /// - trigger FlushBatch() when appropriate
+ ///
internal abstract class BatchedWebServiceServerMessenger : WebServiceServerMessenger
{
- private readonly Func> _getBatch;
-
- internal BatchedWebServiceServerMessenger(Func> getBatch)
+ internal BatchedWebServiceServerMessenger()
{
- if (getBatch == null)
- throw new ArgumentNullException("getBatch");
-
- _getBatch = getBatch;
}
- internal BatchedWebServiceServerMessenger(string login, string password, Func> getBatch)
+ internal BatchedWebServiceServerMessenger(string login, string password)
: base(login, password)
{
- if (getBatch == null)
- throw new ArgumentNullException("getBatch");
-
- _getBatch = getBatch;
}
- internal BatchedWebServiceServerMessenger(string login, string password, bool useDistributedCalls, Func> getBatch)
+ internal BatchedWebServiceServerMessenger(string login, string password, bool useDistributedCalls)
: base(login, password, useDistributedCalls)
{
- if (getBatch == null)
- throw new ArgumentNullException("getBatch");
-
- _getBatch = getBatch;
}
- protected BatchedWebServiceServerMessenger(Func> getLoginAndPassword, Func> getBatch)
+ protected BatchedWebServiceServerMessenger(Func> getLoginAndPassword)
: base(getLoginAndPassword)
{
- if (getBatch == null)
- throw new ArgumentNullException("getBatch");
-
- _getBatch = getBatch;
}
+ protected abstract ICollection GetBatch(bool ensureHttpContext);
+
protected void FlushBatch()
{
- var batch = _getBatch(false);
+ var batch = GetBatch(false);
if (batch == null) return;
var batcha = batch.ToArray();
@@ -82,7 +70,7 @@ namespace Umbraco.Core.Sync
Type idType = null,
string json = null)
{
- var batch = _getBatch(true);
+ var batch = GetBatch(true);
if (batch == null)
throw new Exception("Failed to get a batch.");
diff --git a/src/Umbraco.Core/Sync/WebServiceServerMessenger.cs b/src/Umbraco.Core/Sync/WebServiceServerMessenger.cs
index 1c63b591b7..e5717fbfdc 100644
--- a/src/Umbraco.Core/Sync/WebServiceServerMessenger.cs
+++ b/src/Umbraco.Core/Sync/WebServiceServerMessenger.cs
@@ -14,10 +14,11 @@ namespace Umbraco.Core.Sync
///
/// An that works by messaging servers via web services.
///
- //
- // this messenger sends ALL instructions to ALL servers, including the local server.
- // the CacheRefresher web service will run ALL instructions, so there may be duplicated,
- // except for "bulk" refresh, where it excludes those coming from the local server
+ ///
+ /// this messenger sends ALL instructions to ALL servers, including the local server.
+ /// the CacheRefresher web service will run ALL instructions, so there may be duplicated,
+ /// except for "bulk" refresh, where it excludes those coming from the local server
+ ///
//
// TODO see Message() method: stop sending to local server!
// just need to figure out WebServerUtility permissions issues, if any
diff --git a/src/Umbraco.Web/BatchedDatabaseServerMessenger.cs b/src/Umbraco.Web/BatchedDatabaseServerMessenger.cs
index 0a943f24f9..38de7ef3cc 100644
--- a/src/Umbraco.Web/BatchedDatabaseServerMessenger.cs
+++ b/src/Umbraco.Web/BatchedDatabaseServerMessenger.cs
@@ -8,6 +8,12 @@ using Umbraco.Web.Routing;
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 : Core.Sync.BatchedDatabaseServerMessenger
{
public BatchedDatabaseServerMessenger(ApplicationContext appContext, bool enableDistCalls, DatabaseServerMessengerOptions options)
diff --git a/src/Umbraco.Web/BatchedWebServiceServerMessenger.cs b/src/Umbraco.Web/BatchedWebServiceServerMessenger.cs
index fca0b193db..5fc3b48eee 100644
--- a/src/Umbraco.Web/BatchedWebServiceServerMessenger.cs
+++ b/src/Umbraco.Web/BatchedWebServiceServerMessenger.cs
@@ -4,38 +4,44 @@ using Umbraco.Core.Sync;
namespace Umbraco.Web
{
+ ///
+ /// An that works by messaging servers via web services.
+ ///
+ ///
+ /// This binds to appropriate umbraco events in order to trigger the FlushBatch() calls
+ ///
internal class BatchedWebServiceServerMessenger : Core.Sync.BatchedWebServiceServerMessenger
{
internal BatchedWebServiceServerMessenger()
- : base(GetBatch)
+ : base()
{
UmbracoModule.EndRequest += UmbracoModule_EndRequest;
}
internal BatchedWebServiceServerMessenger(string login, string password)
- : base(login, password, GetBatch)
+ : base(login, password)
{
UmbracoModule.EndRequest += UmbracoModule_EndRequest;
}
internal BatchedWebServiceServerMessenger(string login, string password, bool useDistributedCalls)
- : base(login, password, useDistributedCalls, GetBatch)
+ : base(login, password, useDistributedCalls)
{
UmbracoModule.EndRequest += UmbracoModule_EndRequest;
}
public BatchedWebServiceServerMessenger(Func> getLoginAndPassword)
- : base(getLoginAndPassword, GetBatch)
+ : base(getLoginAndPassword)
{
UmbracoModule.EndRequest += UmbracoModule_EndRequest;
}
- private static ICollection GetBatch(bool ensure)
+ protected override ICollection GetBatch(bool ensureHttpContext)
{
var httpContext = UmbracoContext.Current == null ? null : UmbracoContext.Current.HttpContext;
if (httpContext == null)
{
- if (ensure)
+ if (ensureHttpContext)
throw new NotSupportedException("Cannot execute without a valid/current UmbracoContext with an HttpContext assigned.");
return null;
}
@@ -44,7 +50,7 @@ namespace Umbraco.Web
// no thread-safety here because it'll run in only 1 thread (request) at a time
var batch = (ICollection)httpContext.Items[key];
- if (batch == null && ensure)
+ if (batch == null && ensureHttpContext)
httpContext.Items[key] = batch = new List();
return batch;
}