private void OnCommand(int src, int dest, string command) { const string c_QuitDataStore = "QuitDataStore"; const string c_ReloadConfig = "ReloadConfig"; try { if (0 == command.CompareTo(c_QuitDataStore)) { LogSys.Log(LOG_TYPE.MONITOR, "receive {0} command, save data and then quitting ...", command); if (!m_WaitQuit) { DataCacheSystem.Instance.QueueAction(DataCacheSystem.Instance.DoLastSave); m_WaitQuit = true; } } else if (0 == command.CompareTo(c_ReloadConfig)) { CenterClientApi.ReloadConfigScript(); DataCacheConfig.Init(); LogSys.Log(LOG_TYPE.WARN, "receive {0} command.", command); } } catch (Exception ex) { LogSys.Log(LOG_TYPE.ERROR, "Exception {0}\n{1}", ex.Message, ex.StackTrace); } }
private void Init(string[] args) { m_NameHandleCallback = this.OnNameHandleChanged; m_MsgCallback = this.OnMessage; m_MsgResultCallback = this.OnMessageResultCallback; m_CmdCallback = this.OnCommand; m_LogHandler = this.OnCenterLog; CenterClientApi.SetCenterLogHandler(m_LogHandler); CenterClientApi.Init("datacache", args.Length, args, m_NameHandleCallback, m_MsgCallback, m_MsgResultCallback, m_CmdCallback); m_Channel = new PBChannel(DataMessageEnum2Type.Query, DataMessageEnum2Type.Query); m_Channel.DefaultServiceName = "UserSvr"; LogSys.Init("./config/logconfig.xml"); DataCacheConfig.Init(); GlobalVariables.Instance.IsClient = false; string key = "防君子不防小人"; byte[] xor = Encoding.UTF8.GetBytes(key); ResourceReadProxy.OnReadAsArray = ((string filePath) => { byte[] buffer = null; try { buffer = File.ReadAllBytes(filePath); } catch (Exception e) { LogSys.Log(LOG_TYPE.ERROR, "Exception:{0}\n{1}", e.Message, e.StackTrace); return(null); } return(buffer); }); LogSystem.OnOutput += (Log_Type type, string msg) => { switch (type) { case Log_Type.LT_Debug: LogSys.Log(LOG_TYPE.DEBUG, msg); break; case Log_Type.LT_Info: LogSys.Log(LOG_TYPE.INFO, msg); break; case Log_Type.LT_Warn: LogSys.Log(LOG_TYPE.WARN, msg); break; case Log_Type.LT_Error: case Log_Type.LT_Assert: LogSys.Log(LOG_TYPE.ERROR, msg); break; } }; DbThreadManager.Instance.Init(DataCacheConfig.LoadThreadNum, DataCacheConfig.SaveThreadNum); DataOpSystem.Instance.Init(m_Channel); DataCacheSystem.Instance.Init(); LogSys.Log(LOG_TYPE.INFO, "DataCache initialized"); }
/// <summary> /// 该方法在初始化接口时候已经实现(再次调用该方法的时候,强制从微信服务器获取) /// </summary> /// <returns></returns> public HightTokenResponse send() { string url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + c.AppID + "&secret=" + c.SecretKey; var rs = send(url); if (!string.IsNullOrEmpty(rs.access_token) && rs.access_token != "") { DataCacheConfig.GetHelper().Set(c.AppID + "_HightToken", rs.access_token, 3600); } return(rs); }
public SnsscodesessionResponse send() { string url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + c.AppID + "&secret=" + c.SecretKey + "&js_code=" + code + "&grant_type=authorization_code"; var back = Com.Ddlev.Base.BaseMethod.WebRequestGet(url, Encoding.UTF8); var ts = Newtonsoft.Json.JsonConvert.DeserializeObject <SnsscodesessionResponse>(back); if (string.IsNullOrWhiteSpace(ts.errcode)) { DataCacheConfig.GetHelper().Set("sessionkey_" + ts.openid, ts.session_key, 8 * 60 * 60); //缓存8小时 } return(ts); }
/// <summary> /// 初始化,配置token和缓存时长 /// </summary> /// <param name="C">配置</param> /// <param name="_Token">token的字符</param> /// <param name="senum">缓存时长(秒)</param> public HightToken(Config C, string _Token, int senum = 3600) { this.c = C; if (!DataCacheConfig.GetHelper().HasKey(c.AppID + "_HightToken")) { DataCacheConfig.GetHelper().Set(c.AppID + "_HightToken", _Token, senum); this.Token = _Token; } else { this.Token = DataCacheConfig.GetHelper().Get <string>(c.AppID + "_HightToken").ToString(); } }
/// <summary> /// 初始化 /// </summary> /// <param name="C"></param> public HightToken(Config C) { this.c = C; if (!DataCacheConfig.GetHelper().HasKey(c.AppID + "_HightToken")) { lock (iso) { if (!DataCacheConfig.GetHelper().HasKey(c.AppID + "_HightToken")) { var rs = send(); this.Token = rs.access_token; } } } this.Token = DataCacheConfig.GetHelper().Get <string>(C.AppID + "_HightToken").ToString(); }
/// <summary> /// 获取用户的ticket /// </summary> /// <param name="actoken"></param> /// <returns></returns> public string JsapiTicket(string actoken) { if (!DataCacheConfig.GetHelper().HasKey(appId + "_JsapiTicket")) { string cb = BaseClass.BaseMethod.WebRequestGet("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + actoken + "&type=jsapi", System.Text.Encoding.UTF8); var jo = Newtonsoft.Json.Linq.JObject.Parse(cb); if (Convert.ToInt32(jo["errcode"]) == 0) { var ticket = jo["ticket"].ToString(); DataCacheConfig.GetHelper().Set(appId + "_JsapiTicket", ticket, 7000); return(ticket); } else { return(""); } } else { return(DataCacheConfig.GetHelper().Get <string>(appId + "_JsapiTicket").ToString()); } }
public PhoneNumberRequest(string openid, string _iv, string _encryptedData) { this.session_key = DataCacheConfig.GetHelper().Get <string>("sessionkey_" + openid); this.iv = _iv; this.encryptedData = _encryptedData; }