/// <summary> /// 获取归属地列表 /// </summary> /// <returns></returns> public List <SpreadUserDetail> QueryRegionList() { var result = new List <SpreadUserDetail>(); var req = new GetRegionListRequest(); var res = MKMSClient.Send <GetRegionListResponse>(req); if (res.DoFlag) { result = Mapper.MappGereric <Spread_UserExt, SpreadUserDetail>(res.SpreadUserDos); } return(result); }
private OperationResponse HandleGetRegionListRequest(OperationRequest operationRequest, SendParameters sendParameters) { var regionListRequest = new GetRegionListRequest(this.Protocol, operationRequest); if (regionListRequest.IsValid == false) { this.HandleInvalidOperation(regionListRequest, sendParameters); return(null); } List <string> regions; List <string> endPoints; string message; // authenticate application id if (!this.application.ServerCache.TryGetRegions(regionListRequest, this.NetworkProtocol, this.LocalPort, this.LocalIPAddressIsIPv6, this.IsIPv6ToIPv4Bridged, out regions, out endPoints, out message)) { this.SendOperationResponse(new OperationResponse((byte)OperationCode.GetRegionList) { ReturnCode = (short)ErrorCode.InvalidRegion, DebugMessage = message }, sendParameters); this.ScheduleDisconnect(this.GetDisconnectTime()); return(null); } var regionListResponse = new GetRegionListResponse { Endpoints = endPoints.ToArray(), Region = regions.ToArray() }; this.SendOperationResponse(new OperationResponse((byte)OperationCode.GetRegionList, regionListResponse), sendParameters); return(null); }
public bool TryGetRegions(GetRegionListRequest regionListRequest, NetworkProtocolType networkProtocol, int port, bool isIPv6, bool useHostnames, out List <string> regions, out List <string> endPoints, out string message) { regions = new List <string>(); endPoints = new List <string>(); message = string.Empty; foreach (var server in this.servers) { var endpoint = server.GetEndPoint(networkProtocol, port, isIPv6, useHostnames); if (endpoint == null) { continue; } regions.Add(server.Region); endPoints.Add(endpoint); } return(true); }
/// <summary> /// 获取地区列表 /// </summary> /// <param name="request"></param> /// <returns></returns> public ExecuteResult <GetRegionListResponse> GetRegionList(GetRegionListRequest request) { throw new NotImplementedException(); }
public bool GetRegionList(GetRegionListRequest request, ApplicationAccount appAccount, NetworkProtocolType networkProtocol, int port, bool isIPv6, bool useHostnames, out List <string> regions, out List <string> endPoints, out string message) { regions = new List <string>(); endPoints = new List <string>(); message = null; // check submitted ID: Guid appId; if (!Guid.TryParse(request.ApplicationId, out appId)) { message = string.Format("Invalid Application ID format: {0}", request.ApplicationId); if (log.IsDebugEnabled) { log.Debug(message); return(false); } } if (string.IsNullOrEmpty(appAccount.PrivateCloud)) { message = string.Format("No private cloud set for applicaton ID {0} - can not get Master", request.ApplicationId); log.Error(message); return(false); } var privateCloud = appAccount.PrivateCloud; if (log.IsDebugEnabled) { log.DebugFormat("PrivateCloud: {0}", privateCloud); var infos = appAccount.RegionClusterInfos; if (infos == null) { log.DebugFormat("RegionClusterInfos == null!"); } else { log.DebugFormat("RegionClusterInfos:"); foreach (var info in infos) { log.DebugFormat(info.Key); foreach (var clusterInfo in info.Value) { log.DebugFormat("\t{0}", clusterInfo); } } } } var allPhotonEndpoints = this.GetAllPhotonEndpoints(privateCloud, appAccount.ServiceType, appAccount); //tmp for whitelist var allRegions = new List <string>(); var allEndPoints = new List <string>(); foreach (var server in allPhotonEndpoints) { var endpoint = server.GetEndPoint(networkProtocol, port, isIPv6, useHostnames); if (endpoint == null) { continue; } string regionCluster = FormatRegionCultureString(server, allPhotonEndpoints); //use regionwhite list if (!string.IsNullOrEmpty(appAccount.GetRegionsFilter)) { //store all in case whitelist leaves no result allRegions.Add(regionCluster); allEndPoints.Add(endpoint); if (!IsRegionClusterWhitelisted(appAccount.GetRegionsFilter, server.Region, server.Cluster)) { if (log.IsDebugEnabled) { log.DebugFormat("Whitelist does not contain regionCluster '{0}', skipping", regionCluster); } continue; } } regions.Add(regionCluster); endPoints.Add(endpoint); if (log.IsDebugEnabled) { log.DebugFormat("RegionCluster: {0} -> Endpoint: {1}", regionCluster, endpoint); } } if (!string.IsNullOrEmpty(appAccount.GetRegionsFilter) && regions.Count == 0) { if (log.IsDebugEnabled) { log.DebugFormat("Whitelist left no entries, ignoring whitelist, returning all {0} entries", allRegions.Count); } regions.AddRange(allRegions); endPoints.AddRange(allEndPoints); } if (isIPv6 && regions.Count == 0) { message = string.Format("No IPv6 capable Master found for applicaton ID {0}", request.ApplicationId); log.Error(message); return(false); } return(true); }
/// <summary> /// 获取地区列表 /// </summary> /// <param name="request"></param> /// <returns></returns> public ExecuteResult<GetRegionListResponse> GetRegionList(GetRegionListRequest request) { throw new NotImplementedException(); }