示例#1
0
    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);
        }
    }
示例#2
0
    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");
    }
示例#3
0
        /// <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);
        }
示例#5
0
 /// <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();
     }
 }
示例#6
0
 /// <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();
 }
示例#7
0
 /// <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());
     }
 }
示例#8
0
 public PhoneNumberRequest(string openid, string _iv, string _encryptedData)
 {
     this.session_key   = DataCacheConfig.GetHelper().Get <string>("sessionkey_" + openid);
     this.iv            = _iv;
     this.encryptedData = _encryptedData;
 }