Interface ICacheLoader
The ICacheLoader Interface implementation needs to be provided at the cache server in order to load items to the cache on the cache initialization.
Assembly: Alachisoft.NCache.Runtime.dll
Syntax
public interface ICacheLoader : IDisposable
Methods
GetDatasetsToRefresh(IDictionary<String, Object>)
Responsible for getting new datasets at real-time through polling if refresh-on-event is enabled.
Declaration
IDictionary<string, RefreshPreference> GetDatasetsToRefresh(IDictionary<string, object> userContexts)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IDictionary<System.String, System.Object> | userContexts | Dictionary of user context objects to verify which data to refresh. |
Returns
Type | Description |
---|---|
System.Collections.Generic.IDictionary<System.String, RefreshPreference> | Dictionary of datasets to refresh. |
Examples
The following example calls the GetRefreshedDatasets method to get new dataset.
IDictionary<string, RefreshPreference> GetDatasetsToRefresh(IDictionary<string, object> userContexts)
{
DateTime? lastRefreshTime;
bool datasetHasUpdated;
// Create a dictionary for datasets to refresh with their refresh preference
IDictionary<string, RefreshPreference> DatasetsToRefresh = new Dictionary<string, RefreshPreference>();
foreach (var dataset in userContexts.Keys)
{
switch (dataset.ToLower())
{
// If dataset is products, check if dataset has been updated in data source
// if yes, then refresh the dataset now
case "products":
lastRefreshTime = userContexts[dataset] as DateTime?;
datasetHasUpdated = HasProductDatasetUpdated(dataset, lastRefreshTime);
if (datasetHasUpdated)
{
DatasetsToRefresh.Add(dataset, RefreshPreference.RefreshNow);
}
break;
default:
// Invalid dataset
}
}
// Return the dictionary containing datasets to refresh on polling with their refresh preferences
return DatasetsToRefresh;
}
Init(IDictionary<String, String>, String)
Declaration
void Init(IDictionary<string, string> parameters, string cacheName)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IDictionary<System.String, System.String> | parameters | |
System.String | cacheName |
LoadDatasetOnStartup(String)
This method loads item in dataset on cache startup.
Declaration
object LoadDatasetOnStartup(string dataset)
Parameters
Type | Name | Description |
---|---|---|
System.String | dataset | Dataset for which loader is called. |
Returns
Type | Description |
---|---|
System.Object | Result of loading dataset. |
Examples
The following example loads product or order into cache based on the dataset.
OrderedDictionary orderedDictionary = new OrderedDictionary();
string key = "";
ProviderCacheItem cacheItem = null;
if (dataset.Equals("Product"))
{
key = "Product";
cacheItem = new ProviderCacheItem("Product");
}
else if (dataset.Equals("Order"))
{
key = "Order";
cacheItem = new ProviderCacheItem("Order");
}
else if (dataset.Equals("Customer"))
{
key = "Customer";
cacheItem = new ProviderCacheItem("Customer");
}
orderedDictionary.Add(key, cacheItem);
LoaderResult result = new LoaderResult();
result.Data = orderedDictionary;
result.HasMoreData = false;
return result;
RefreshDataset(String, Object)
Responsible for refreshing items in dataset.
Declaration
object RefreshDataset(string dataset, object userContext)
Parameters
Type | Name | Description |
---|---|---|
System.String | dataset | Dataset to refresh. |
System.Object | userContext | User context object to verify which data needs to refresh. |
Returns
Type | Description |
---|---|
System.Object | Result of dataset refresh. |
Examples
The following example refreshes product or order into cache based on the dataset.
string key1 = "";
ProviderCacheItem cacheItem1 = null;
string key2 = "";
ProviderCacheItem cacheItem2 = null;
string key3 = "";
if (dataset.Equals("Product"))
{
key1 = "Product";
cacheItem1 = new ProviderCacheItem("Product");
key2 = "Product1";
cacheItem2 = new ProviderCacheItem("Product1");
}
else if (dataset.Equals("Order"))
{
key1 = "Order";
cacheItem1 = new ProviderCacheItem("Order");
key2 = "Order1";
cacheItem2 = new ProviderCacheItem("Order1");
}
else if (dataset.Equals("Customer"))
{
key1 = "Customer1";
cacheItem1 = new ProviderCacheItem("Customer1");
key2 = "Customer2";
cacheItem2 = new ProviderCacheItem("Customer2");
key3 = "Customer";
}
RefresherResult result = new RefresherResult();
result.AddCacheItem(key2,cacheItem2);
result.UpdateCacheItem(key1,cacheItem1);
result.RemoveCacheItem(key3);
result.HasMoreData = false;
return result;