private static void CloseBuckets(object status)
        {
            SafeBucket safeBucket;

            try
            {
                int count = SafeBucket.garbagePool.Count;
                for (int i = 0; i < count; i++)
                {
                    if (SafeBucket.garbagePool.TryDequeue(out safeBucket))
                    {
                        if (safeBucket.currentThreadCount != -1)
                        {
                            SafeBucket.garbagePool.Enqueue(safeBucket);
                        }
                        else
                        {
                            safeBucket.bucket.Dispose();
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                DebugUtil.CollectDebugInfo(string.Format("CloseBuckets Exception:{0}", exception.Message));
            }
        }
Exemple #2
0
        public string GetAppUri(AppNameEnum appName)
        {
            string empty = string.Empty;

            try
            {
                string str = appName.ToString();
                DebugUtil.CollectDebugInfo(str, "WJOP.Foundation.Location.LocationHelper.GetAppUri");
                if (!LocationHelper._appUriDic.TryGetValue(str, out empty))
                {
                    empty = this.GetAppLocation(str);
                    LocationHelper._appUriDic.TryAdd(str, empty);
                }
                else
                {
                    empty = LocationHelper._appUriDic[str];
                }
            }
            catch (Exception exception1)
            {
                Exception exception = exception1;
                DebugUtil.LogException(exception);
                DebugUtil.CollectDebugInfo(exception, "WJOP.Foundation.Location.LocationHelper.GetAppUri");
            }
            return(empty);
        }
Exemple #3
0
        public bool Exists(string key)
        {
            bool flag = false;

            try
            {
                SafeBucket instance = SafeBucket.Instance;
                try
                {
                    flag = instance.Bucket.Exists(KeyGen.AttachPrefixToKey(key));
                }
                finally
                {
                    if (instance != null)
                    {
                        ((IDisposable)instance).Dispose();
                    }
                }
                DebugUtil.CollectDebugInfo(string.Format("Exists('{0}'), IsSuccess:{1}", key, flag));
            }
            catch (Exception exception1)
            {
                Exception exception = exception1;
                DebugUtil.CollectDebugInfo(string.Format("Exists('{0}'), Exception:{1}", key, exception.Message));
            }
            return(flag);
        }
Exemple #4
0
        public ICacheResult <T> Set <T>(string key, T value, int expiredTime = 3600)
        {
            CacheResult <T> cacheResult = new CacheResult <T>()
            {
                Success = false,
                Status  = Status.None
            };
            CacheResult <T> cacheResult1 = cacheResult;

            expiredTime = (expiredTime <= 0 ? 3600 : expiredTime);
            try
            {
                SafeBucket instance = SafeBucket.Instance;
                try
                {
                    IOperationResult <T> operationResult = instance.Bucket.Upsert <T>(KeyGen.AttachPrefixToKey(key), value, new TimeSpan(0, 0, 0, expiredTime));
                    DebugUtil.CollectDebugInfo(string.Format("Set<T>('{0}'), Status:{1}, Exception:{2}", key, operationResult.Status, (operationResult.Exception == null ? "null" : operationResult.Exception.Message)));
                    cacheResult1 = new CacheResult <T>(operationResult);
                }
                finally
                {
                    if (instance != null)
                    {
                        ((IDisposable)instance).Dispose();
                    }
                }
            }
            catch (Exception exception1)
            {
                Exception exception = exception1;
                cacheResult1.Exception = exception;
                DebugUtil.CollectDebugInfo(string.Format("Set<T>('{0}'), Exception:{1}", key, exception.Message));
            }
            return(cacheResult1);
        }
Exemple #5
0
        public IDictionary <string, ICacheResult <T> > Set <T>(IDictionary <string, T> items, int expiredTime = 3600)
        {
            Dictionary <string, ICacheResult <T> > strs = new Dictionary <string, ICacheResult <T> >();

            expiredTime = (expiredTime <= 0 ? 3600 : expiredTime);
            TimeSpan   timeSpan = new TimeSpan(0, 0, 0, expiredTime);
            SafeBucket instance = SafeBucket.Instance;

            try
            {
                foreach (KeyValuePair <string, T> item in items)
                {
                    IOperationResult <T> operationResult = instance.Bucket.Upsert <T>(KeyGen.AttachPrefixToKey(item.Key), item.Value, timeSpan);
                    DebugUtil.CollectDebugInfo(string.Format("Set<T>('{0}'), Status:{1}, Exception:{2}", item.Key, operationResult.Status, (operationResult.Exception == null ? "null" : operationResult.Exception.Message)));
                    strs.Add(item.Key, new CacheResult <T>(operationResult));
                }
            }
            finally
            {
                if (instance != null)
                {
                    ((IDisposable)instance).Dispose();
                }
            }
            return(strs);
        }
Exemple #6
0
        public ICacheResult Remove(string key)
        {
            CacheResult cacheResult = new CacheResult()
            {
                Success = false,
                Status  = Status.None
            };
            CacheResult cacheResult1 = cacheResult;

            try
            {
                SafeBucket instance = SafeBucket.Instance;
                try
                {
                    IOperationResult operationResult = instance.Bucket.Remove(KeyGen.AttachPrefixToKey(key));
                    DebugUtil.CollectDebugInfo(string.Format("Remove('{0}'), Status:{1}, Exception:{2}", key, operationResult.Status, (operationResult.Exception == null ? "null" : operationResult.Exception.Message)));
                    cacheResult1 = new CacheResult(operationResult);
                }
                finally
                {
                    if (instance != null)
                    {
                        ((IDisposable)instance).Dispose();
                    }
                }
            }
            catch (Exception exception1)
            {
                Exception exception = exception1;
                cacheResult1.Exception = exception;
                DebugUtil.CollectDebugInfo(string.Format("Remove('{0}'), Exception:{1}", key, exception.Message));
            }
            return(cacheResult1);
        }
Exemple #7
0
        public ICacheResult <TResult> GetOrSet <TParam, TResult>(string key, Func <TParam, TResult> func, TParam param, int expiredTime = 3600) where TResult : class
        {
            ICacheResult <TResult> cacheResult = this.Get <TResult>(key);

            expiredTime = (expiredTime <= 0 ? 3600 : expiredTime);
            if ((cacheResult.Status != Status.Success ? true : !cacheResult.Success))
            {
                try
                {
                    TResult tResult = func(param);
                    this.Set <TResult>(key, tResult, expiredTime);
                    cacheResult.Value   = tResult;
                    cacheResult.Success = true;
                    cacheResult.Status  = Status.Success;
                }
                catch (Exception exception1)
                {
                    Exception exception = exception1;
                    cacheResult.Exception = exception;
                    cacheResult.Success   = false;
                    cacheResult.Value     = default(TResult);
                    cacheResult.Status    = Status.None;
                    DebugUtil.CollectDebugInfo(string.Format("GetOrSet<TPara, TResult>('{0}'), Exception:{1}", key, exception.Message));
                }
            }
            return(cacheResult);
        }
Exemple #8
0
        private static string GetLogAPIUrl()
        {
            string appUri = LocationHelper.Instance.GetAppUri(AppNameEnum.LogApi);
            string str    = string.Format("{0}{1}", appUri, "api/log/BinaryWrite");

            DebugUtil.CollectDebugInfo(str, "WJOP.Foundation.Log.SDK.LogHost.GetLogAPIUrl line:28");
            return(str);
        }
Exemple #9
0
 public void Refresh()
 {
     if (!LocationHelper._appUriDic.IsEmpty)
     {
         List <string> list = LocationHelper._appUriDic.Keys.ToList <string>();
         IDictionary <string, string> data = null;
         try
         {
             string str = string.Concat(AppContext.LocationServerURI, "api/Location/BatchGetAppLocations");
             DebugUtil.CollectDebugInfo(str, "WJOP.Foundation.Location.LocationHelper.Refresh");
             BatchGetLocationRequest batchGetLocationRequest = new BatchGetLocationRequest()
             {
                 AppKey      = AppContext.AppKey,
                 AppNameList = list
             };
             EnvInfo envInfo = new EnvInfo()
             {
                 IP  = AppContext.IPv4,
                 Env = AppContext.Environment
             };
             batchGetLocationRequest.EnvInfo = envInfo;
             BatchGetLocationRequest batchGetLocationRequest1          = batchGetLocationRequest;
             FoundationResponse <IDictionary <string, string> > result = str.PostWebApi <FoundationResponse <IDictionary <string, string> >, BatchGetLocationRequest>(batchGetLocationRequest1, null, 180000).Result;
             if (!result.IsSuccess)
             {
                 DebugUtil.Log(string.Format("LocationHelper: Failed to Refresh error Message: {0}", result.ErrMsg));
             }
             else
             {
                 data = result.Data;
                 foreach (string key in data.Keys)
                 {
                     DebugUtil.Log(string.Format("WJOP.Foundation.Location.LocationHelper.Refresh key:[{0}],old value [{1}] , new Value:[{2}]", key, LocationHelper._appUriDic[key], data[key]));
                     LocationHelper._appUriDic[key] = data[key];
                 }
             }
         }
         catch (Exception exception1)
         {
             Exception exception = exception1;
             DebugUtil.LogException(exception);
             DebugUtil.CollectDebugInfo(exception, "WJOP.Foundation.Location.LocationHelper.Refresh");
         }
     }
     else
     {
         DebugUtil.Log("WJOP.Foundation.Location.LocationHelper.Refresh: don't need to refresh");
     }
 }
Exemple #10
0
        public static ApiResult <TResult> Call <TResult, TData>(string url, TData data, ApiHttpMethod method = 0, int timeout = 180000, NameValueCollection headers = null)
        {
            string empty = string.Empty;
            ApiResult <TResult>  apiResult = new ApiResult <TResult>();
            TResult              tResult;
            JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();

            try
            {
                using (var client = new HttpClient())
                {
                    Task <HttpResponseMessage> response = null;
                    if (method == ApiHttpMethod.POST)
                    {
                        HttpContent content = new StringContent(javaScriptSerializer.Serialize(data), Encoding.UTF8, "application/json");
                        response = client.PostAsync(url, content);
                    }
                    else
                    {
                        response = client.GetAsync(url);
                    }
                    response.Result.EnsureSuccessStatusCode();
                    apiResult.StatusCode = response.Result.StatusCode;
                    empty = response.Result.Content.ReadAsStringAsync().Result;
                    if (typeof(TResult) == typeof(bool))
                    {
                        tResult          = default(TResult);
                        apiResult.Result = empty.ToGetValue <TResult>(tResult);
                    }
                    else if (!(typeof(TResult) == typeof(string)))
                    {
                        apiResult.Result = javaScriptSerializer.Deserialize <TResult>(empty);
                    }
                    else
                    {
                        tResult          = default(TResult);
                        apiResult.Result = empty.ToGetValue <TResult>(tResult);
                    }
                }
            }
            catch (Exception ex)
            {
                apiResult.ExceptionMessage = ex.Message;
                DebugUtil.LogException(ex);
                DebugUtil.CollectDebugInfo(ex, "TGOP.Foundation.Common.ProxyBase.Call");
            }
            return(apiResult);
        }
        private RedisCache()
        {
            string cacheConfigString = AppContext.CacheConfigString;
            string appUri            = LocationHelper.Instance.GetAppUri(AppNameEnum.RedisSvc);

            cacheConfigString = (string.IsNullOrEmpty(cacheConfigString) ? appUri.Replace("http://", string.Empty).Trim(new char[] { '/' }) : cacheConfigString);
            ConfigurationOptions configurationOption = ConfigurationOptions.Parse(cacheConfigString);

            if (configurationOption.EndPoints.Count == 0)
            {
                configurationOption.EndPoints.Add(appUri);
            }
            this.redis = ConnectionMultiplexer.Connect(configurationOption, null);
            this.db    = this.redis.GetDatabase(-1, null);
            DebugUtil.CollectDebugInfo(JsonSerializerUtil.Serialize <ConfigurationOptions>(configurationOption));
        }
Exemple #12
0
        private string GetAppLocation(string appName)
        {
            string data = null;

            try
            {
                string str = string.Concat(AppContext.LocationServerURI, "api/Location/GetAppLocation");
                DebugUtil.CollectDebugInfo(str, "WJOP.Foundation.Location.LocationHelper.GetAppUris line:70");
                GetLocationRequest getLocationRequest = new GetLocationRequest()
                {
                    AppKey  = AppContext.AppKey,
                    AppName = appName
                };
                EnvInfo envInfo = new EnvInfo()
                {
                    IP  = AppContext.IPv4,
                    Env = AppContext.Environment
                };
                getLocationRequest.EnvInfo = envInfo;
                GetLocationRequest          getLocationRequest1 = getLocationRequest;
                FoundationResponse <string> result = str.PostWebApi <FoundationResponse <string>, GetLocationRequest>(getLocationRequest1, null, 180000).Result;
                if (!result.IsSuccess)
                {
                    DebugUtil.Log(string.Format("LocationHelper: Failed to match service uri for {0}, error Message: {1}", appName, result.ErrMsg));
                }
                else
                {
                    DebugUtil.Log(string.Format("LocationHelper: Found service uri for {0} : {1}", appName, result.Data));
                    data = result.Data;
                }
            }
            catch (Exception exception1)
            {
                Exception exception = exception1;
                DebugUtil.LogException(exception);
                DebugUtil.CollectDebugInfo(exception, "WJOP.Foundation.Location.LocationHelper.GetAppUris line:98");
            }
            return(data);
        }
Exemple #13
0
        public ICacheResult ResetKeys(string keyPrefix = "")
        {
            CacheResult cacheResult = new CacheResult()
            {
                Success = false,
                Status  = Status.None
            };
            CacheResult cacheResult1 = cacheResult;

            try
            {
                SafeBucket instance = SafeBucket.Instance;
                try
                {
                    IBucket  bucket = instance.Bucket;
                    object[] appKey = new object[] { AppContext.AppKey, keyPrefix, SafeBucket.Instance.Bucket.Name, KeyGen.AttachPrefixToKey(keyPrefix) };
                    bucket.Query <object>(string.Format("CREATE INDEX {0}_{1}_KeyPrefix_Index ON {2}(position((meta().id), \"{3}\")) USING GSI", appKey));
                    IQueryResult <object> queryResult = instance.Bucket.Query <object>(string.Format("DELETE FROM {0} WHERE POSITION(META().id, \"{1}\") = 0", SafeBucket.Instance.Bucket.Name, KeyGen.AttachPrefixToKey(keyPrefix)));
                    instance.Bucket.Query <object>(string.Format("DROP INDEX {0}.{1}_{2}_KeyPrefix_Index USING GSI", SafeBucket.Instance.Bucket.Name, AppContext.AppKey, keyPrefix));
                    DebugUtil.CollectDebugInfo(string.Format("Reset keys by prefix('{0}'), Status:{1}, Exception:{2}", keyPrefix, queryResult.Status, (queryResult.Exception == null ? "null" : queryResult.Exception.Message)));
                    cacheResult1 = new CacheResult(queryResult);
                }
                finally
                {
                    if (instance != null)
                    {
                        ((IDisposable)instance).Dispose();
                    }
                }
            }
            catch (Exception exception1)
            {
                Exception exception = exception1;
                cacheResult1.Exception = exception;
                DebugUtil.CollectDebugInfo(string.Format("Reset keys by prefix('{0}'), Exception:{1}", keyPrefix, exception.Message));
            }
            return(cacheResult1);
        }
Exemple #14
0
        public ICacheResult <T> Get <T>(string key)
        {
            CacheResult <T> cacheResult = new CacheResult <T>()
            {
                Success = false,
                Status  = Status.None
            };
            CacheResult <T> cacheResult1 = cacheResult;

            try
            {
                SafeBucket instance = SafeBucket.Instance;
                try
                {
                    IOperationResult <T> operationResult = instance.Bucket.Get <T>(KeyGen.AttachPrefixToKey(key));
                    object[]             objArray        = new object[] { key, operationResult.Status, null, null };
                    objArray[2] = (operationResult.Value == null ? "null" : operationResult.Value.ToString());
                    objArray[3] = (operationResult.Exception == null ? "null" : operationResult.Exception.Message);
                    DebugUtil.CollectDebugInfo(string.Format("Get<T>('{0}'), Status:{1}, Value:{2}, Exception:{3}", objArray));
                    cacheResult1 = new CacheResult <T>(operationResult);
                }
                finally
                {
                    if (instance != null)
                    {
                        ((IDisposable)instance).Dispose();
                    }
                }
            }
            catch (Exception exception1)
            {
                Exception exception = exception1;
                cacheResult1.Exception = exception;
                DebugUtil.CollectDebugInfo(string.Format("Get<T>('{0}'), Exception:{1}", key, exception.Message));
            }
            return(cacheResult1);
        }