Пример #1
0
        //删除切片
        public static bool DeleteFile(string maptype, string x, string y, string z)
        {
            string fullfilepath = Folderpath + CreateFolder(maptype) + z + "\\" + x + "\\" + y + JsonHelper.GetValueByKey(maptype).suffix;;
            string rediskey     = maptype + "-" + JsonHelper.GetValueByKey(maptype).version + "-" + z + "-" + x + "-" + y;

            try
            {
                if (SeRedisHelper.HasKey(rediskey))
                {
                    SeRedisHelper.KeyDelete(rediskey);
                }
                if (File.Exists(fullfilepath))
                {
                    File.Delete(fullfilepath);
                }
                return(true);
            }
            catch (Exception e)
            {
                Log4Helper.WriteLog("删除缓存失败!");
                Log4Helper.WriteLog(e);
                return(false);
            }
        }
 /// <summary>
 /// redis类库错误
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private static void MuxerInternalError(object sender, InternalErrorEventArgs e)
 {
     Log4Helper.WriteLog("InternalError:Message" + e.Exception.Message);
 }
 /// <summary>
 /// 更改集群
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private static void MuxerHashSlotMoved(object sender, HashSlotMovedEventArgs e)
 {
     Log4Helper.WriteLog("HashSlotMoved:NewEndPoint" + e.NewEndPoint + ", OldEndPoint" + e.OldEndPoint);
 }
 /// <summary>
 /// 连接失败 , 如果重新连接成功你将不会收到这个通知
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private static void MuxerConnectionFailed(object sender, ConnectionFailedEventArgs e)
 {
     Log4Helper.WriteLog("重新连接:Endpoint failed: " + e.EndPoint + ", " + e.FailureType + (e.Exception == null ? "" : (", " + e.Exception.Message)));
 }
 /// <summary>
 /// 重新建立连接之前的错误
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private static void MuxerConnectionRestored(object sender, ConnectionFailedEventArgs e)
 {
     Log4Helper.WriteLog("ConnectionRestored: " + e.EndPoint);
 }
 /// <summary>
 /// 发生错误时
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private static void MuxerErrorMessage(object sender, RedisErrorEventArgs e)
 {
     Log4Helper.WriteLog("ErrorMessage: " + e.Message);
 }
 /// <summary>
 /// 配置更改时
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private static void MuxerConfigurationChanged(object sender, EndPointEventArgs e)
 {
     Log4Helper.WriteLog("Configuration changed: " + e.EndPoint);
 }
Пример #8
0
        /// <summary>
        /// 带缓存功能的地图服务
        /// </summary>
        /// <param name="maptype">地图类型</param>
        /// <param name="x">行号</param>
        /// <param name="y">列号</param>
        /// <param name="z">地图等级</param>
        /// <returns></returns>
        public async Task <Stream> GeteMapService(string maptype, string x, string y, string z)
        {
            if (string.IsNullOrEmpty(maptype))
            {
                maptype = Defaultmaptype;
            }
            string key    = maptype + "-" + JsonHelper.GetValueByKey(maptype).version + "-" + z + "-" + x + "-" + y;
            string base64 = (await SeRedisHelper.GetAsync(key)).ToString();

            if (!string.IsNullOrEmpty(base64))
            {
                try
                {
                    byte[] bytes = Convert.FromBase64String(base64);
                    Stream strem = new MemoryStream(bytes);
                    WriteFileHelper.AddList("redsuc");
                    return(strem);
                }
                catch (Exception e)
                {
                    string base404 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEX8+fKNaX6qAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAH0lEQVRo3u3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAvg0hAAABfxmcpwAAAABJRU5ErkJggg==";
                    WriteFileHelper.AddList("rederr");
                    Log4Helper.WriteLog("redis读取错误!");
                    Log4Helper.WriteLog(e);
                    byte[] bytes = Convert.FromBase64String(base404);
                    Stream strem = new MemoryStream(bytes);
                    return(strem);
                }
            }
            else
            {
                string        filepath   = GetMapDir(maptype, x, y, z);
                string        folderpath = CreateMapDir(maptype, x, y, z);
                DirectoryInfo dir        = new DirectoryInfo(folderpath);
                if (!dir.Exists)
                {
                    try
                    {
                        dir.Create();
                    }
                    catch (Exception e)
                    {
                        Log4Helper.WriteLog("文件夹创建失败!");
                        Log4Helper.WriteLog(e);
                    }
                }
                if (File.Exists(filepath))
                {
                    try
                    {
                        FileStream fs = new FileStream(filepath, FileMode.Open,
                                                       FileAccess.Read, FileShare.Read);
                        WriteFileHelper.AddList("folsuc");
                        return(fs);
                    }
                    catch (Exception e)
                    {
                        string base404 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEX8+fKNaX6qAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAH0lEQVRo3u3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAvg0hAAABfxmcpwAAAABJRU5ErkJggg==";

                        Log4Helper.WriteLog("文件夹读取失败!");
                        Log4Helper.WriteLog(e);
                        byte[] bytes = Convert.FromBase64String(base404);
                        Stream strem = new MemoryStream(bytes);
                        WriteFileHelper.AddList("folerr");
                        return(strem);
                    }
                }
                else
                {
                    string         url     = GetMapUrl(maptype, x, y, z);
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                    request.Timeout   = 60000;
                    request.KeepAlive = false;
                    request.Method    = "GET";
                    request.ServicePoint.ConnectionLimit = 512;
                    request.UserAgent         = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)"; //
                    request.AllowAutoRedirect = true;                                                                    //是否允许302
                    HttpWebResponse response = null;
                    Stream          stream   = null;
                    try
                    {
                        response = request.GetResponse() as HttpWebResponse;
                        stream   = response.GetResponseStream();
                        byte[] bytes = StreamToBytes(stream);
                        WriteFileHelper.AddQueue(maptype, x, y, z, bytes);
                        WriteFileHelper.AddList("websuc");
                        Stream str = new MemoryStream(bytes);
                        return(str);
                    }
                    catch (Exception e)
                    {
                        string base404 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEX8+fKNaX6qAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAH0lEQVRo3u3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAvg0hAAABfxmcpwAAAABJRU5ErkJggg==";

                        Log4Helper.WriteLog("网络请求失败!");
                        Log4Helper.WriteLog(e);
                        byte[] bytes = Convert.FromBase64String(base404);
                        Stream strem = new MemoryStream(bytes);
                        WriteFileHelper.AddList("weberr");
                        return(strem);
                    }
                    finally
                    {
                        request.Abort();
                        if (response != null)
                        {
                            response.Close();
                        }
                        if (stream != null)
                        {
                            stream.Close();
                        }
                    }
                }
            }
        }