예제 #1
0
        public ProviderDataTypeItem <IEnumerable> LoadDataTypeFromSource(string key, DistributedDataType dataType)
        {
            IEnumerable value = null;
            ProviderDataTypeItem <IEnumerable> dataTypeItem = null;

            switch (dataType)
            {
            case DistributedDataType.List:
                value = new List <object>()
                {
                    LoadFromDataSource(key)
                };
                dataTypeItem = new ProviderDataTypeItem <IEnumerable>(value);
                break;

            case DistributedDataType.Dictionary:
                value = new Dictionary <string, object>()
                {
                    { key, LoadFromDataSource(key) }
                };
                dataTypeItem = new ProviderDataTypeItem <IEnumerable>(value);
                break;

            case DistributedDataType.Counter:
                dataTypeItem = new ProviderDataTypeItem <IEnumerable>(1000);
                break;
            }

            return(dataTypeItem);
        }
예제 #2
0
        /// <summary>
        /// Responsible for loading data structures from the external data source.
        /// </summary>
        /// <param name="key">key to fetch from data source</param>
        /// <param name="dataType">type of data structure received</param>
        /// <returns>Data structure contained in ProviderCacheItem which can be enumerated</returns>
        public ProviderDataTypeItem <IEnumerable> LoadDataTypeFromSource(string key, DistributedDataType dataType)
        {
            // initialize ProviderDataTypeItem to return
            ProviderDataTypeItem <IEnumerable> providerItem = null;

            // create a switch to handle different Data Structures
            switch (dataType)
            {
            // incase of counter, the value will be a long data type
            case DistributedDataType.Counter:
                providerItem = new ProviderDataTypeItem <IEnumerable>(sqlDatasource.GetCustomerCountByCompanyName(key));
                break;

            // incase of all other data types, the result must be enumerable
            case DistributedDataType.Dictionary:
                providerItem = new ProviderDataTypeItem <IEnumerable>(sqlDatasource.LoadCustomersByCity(key));
                break;

            case DistributedDataType.List:
                providerItem = new ProviderDataTypeItem <IEnumerable>(sqlDatasource.LoadCustomersFromCountry(key));
                break;

            case DistributedDataType.Queue:
                providerItem = new ProviderDataTypeItem <IEnumerable>(sqlDatasource.LoadCustomersByOrder(key));
                break;

            case DistributedDataType.Set:
                // only primitive types can be used for HashSet
                providerItem = new ProviderDataTypeItem <IEnumerable>(sqlDatasource.LoadOrderIDsByCustomer(key));
                break;
            }

            return(providerItem);
        }
예제 #3
0
 public void MakeStoreItem(string key, ProviderDataTypeItem <object> providerItem)
 {
     Key            = key;
     ExpirationType = providerItem.Expiration.Type;
     TimeToLive     = providerItem.Expiration.ExpireAfter;
     ItemPriority   = providerItem.ItemPriority;
     Group          = providerItem.Group;
 }