protected virtual async Task <IRemoteService> CreateSessionServiceAsync(string socketID, ClientEnterServerRequest enter) { var cfg = new HashMap <string, string>(); cfg["sessionID"] = socketID; cfg["accountID"] = enter.c2s_account; cfg["connectName"] = this.SelfAddress.ServiceName; cfg["channel"] = enter.c2s_clientInfo.channel; cfg["passport"] = enter.c2s_clientInfo.sdkName; var addr = ServerNames.CreateSessionServiceAddress(enter.c2s_account, this.SelfAddress); var session = await this.Provider.GetOrCreateAsync(addr, cfg); if (session.Config["connectName"] != this.SelfAddress.ServiceName) { //如果Session在别的进程// this.log.WarnFormat("已存在相同Session在其他Connect:{0}", session.Address); this.log.WarnFormat("关闭老的Session:{0}", session.Address); var newAddress = ServerNames.CreateSessionServiceAddress(enter.c2s_account, this.SelfAddress); //log.Log(string.Format("Session Replace {0} -> {1}", session.Address, newAddress)); try { await session.ShutdownAsync("new connect"); } catch (Exception err) { log.Error(err.Message, err); } session = await this.Provider.CreateAsync(newAddress, cfg); //throw new Exception("Session Alread Exist In Node : " + ret.Address.ServiceNode); } return(session); }
public Configuration( string configuration_path ) { serviceController = new System.ServiceProcess.ServiceController("SMTPSVC"); XmlTextReader reader = new XmlTextReader( configuration_path ); XmlDocument doc = new XmlDocument(); doc.Load( reader ); // -- XmlNode settings_node = doc.SelectSingleNode( "/configuration/settings" ); Settings = new Settings( settings_node ); // -- XmlNodeList server_nodes = doc.SelectNodes( "/configuration/servers/server" ); ArrayList servers = new ArrayList( server_nodes.Count ); foreach( XmlNode server_node in server_nodes ) { Server server = new Server( this, server_node ); servers.Add( server ); ServerNames.Add(server.Address); ServerTable.Add(server.Address,server); } Servers = (Server[])servers.ToArray( typeof(Server) ); // -- doc = null; reader = null; }
public void LoadServerNames() { ServerNames.Clear(); foreach (var item in ServerList) { ServerNames.Add(item.Name); } }
public static string PlatformToString(string region) { region = region.ToUpper(); if (ServerNames.ContainsKey(region)) { return(ServerNames[region]); } return(region); }
protected virtual async Task <IRemoteService> CreateLogicServiceAsync(ClientEnterGameRequest enter_game) { var cfg = await InitConfig(); var ret = await this.Provider.CreateAsync( ServerNames.GetLogicServiceAddress(enter_game.c2s_roleUUID, this.SelfAddress.ServiceNode), cfg); this.remote_logic_service = ret; return(ret); }
private void GetDbServers() { if (!chkScanNetwork.Checked) { //RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"); //string[] array = (string[])registryKey.GetValueNames(); //if (array.Length > 0) RegistryKey baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64); RegistryKey key = baseKey.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"); foreach (string sqlInstance in key.GetValueNames()) { if (sqlInstance == "MSSQLSERVER") { ServerNames.Add(Environment.MachineName); } else { ServerNames.Add(Environment.MachineName + "\\" + sqlInstance); } } } else { SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance; DataTable dataSources = instance.GetDataSources(); DataRow[] array3 = dataSources.Select(""); DataRow[] array4 = array3; for (int j = 0; j < array4.Length; j++) { DataRow dataRow = array4[j]; if (dataRow["InstanceName"] is string) { ServerNames.Add(dataRow["ServerName"] + "\\" + dataRow["InstanceName"]); } else { ServerNames.Add(dataRow["ServerName"]); } } } ServerNames.Sort(); }
/// <summary> /// Handles the specified input. /// </summary> /// <param name="input"></param> /// <returns></returns> public Result Handle(Input input) { var Result = new Result(); var tableName = input.TableName; if (tableName.IsNullOrEmpty()) { Result.ErrorMessage = "Herhangi bir tablo ismi seçilmelidir"; return(Result); } var connectionInfo = FindProcedureContainerDatabaseConnectionInfo(input.TableName); if (connectionInfo == null) { return(Result); } var info = DbItemNameInfoParser.Parse(tableName); var writerContext = new WriterContext { Config = new TableConfig { TableName = info.Name, SchemaName = info.SchemaName, DatabaseName = info.DatabaseName ?? DatabaseNames.BOA, DatabaseEnumName = connectionInfo.DatabaseName, ServerNameForTakeTableInformation = ServerNames.GetServerNameOfConnectionString(connectionInfo.ConnectionStringDev) } }; new NamingConvention { Context = writerContext }.InitializeNames(); var generator = new SelectByKeySql(writerContext); Result.GeneratedSQLCode = generator.Generate(); return(Result); }
/// <summary> /// 处理角色封停 /// </summary> /// <param name="obj"></param> /// <returns></returns> private async Task <string> OnHandleServerBan(JObject obj) { var type = (BanType)obj["type"].ToObject <short>(); var rolename_list = obj["role"].ToString().Split(','); var reason = obj["reason"].ToString(); var final_date = DateTime.UtcNow; switch (type) { case BanType.Ban_Seven: final_date = final_date.AddDays(7); break; case BanType.Ban_Month: final_date = final_date.AddMonths(1); break; case BanType.Ban_Year: final_date = final_date.AddYears(1); break; case BanType.Ban_Forever: final_date = final_date.AddYears(99); break; case BanType.Ban_Cancel: final_date.AddDays(-1); break; } //TODO 接口不支持多用户暂时写死 var roleDataWriter = new TLRoleDataStatusSnapWriter(this); string roleUUID = null; var result = await roleDataWriter.SuspendRoleData(rolename_list[0], final_date, reason, string.Empty); //KICK Logic. if (type != BanType.Ban_Cancel && !string.IsNullOrEmpty(result.Item3)) { roleUUID = result.Item3; var logic = await this.Provider.GetAsync(ServerNames.GetLogicServiceAddress(roleUUID)); if (logic != null && logic.Config.TryGetValue("sessionName", out var sessionName)) { var session = await this.Provider.GetAsync(new RemoteAddress(sessionName)); if (session != null) { var notify = new KickPlayerNotify(); notify.reason = reason; session.Invoke(notify); } } } if (result.Item1) { return(ResponseResult(true)); } else { return(ResponseResult(false, result.Item2)); } }