📄 configcontroller.java
字号:
} public void addNetwork(String serverName, String domainName, int port) throws Exception { if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, "ConfigController.addNetwork(" + serverName + ',' + domainName + ',' + port + ')'); short sid = a3cmlConfig.getServerIdByName(serverName); addNetwork(sid, domainName, port); } public void addNetwork(short serverId, String domainName, int port) throws Exception { if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, "ConfigController.addNetwork(" + serverId + ',' + domainName + ',' + port + ')'); checkStatus(Status.CONFIG); A3CMLServer server = a3cmlConfig.getServer(serverId); A3CMLNetwork newNetwork = new A3CMLNetwork(domainName, port); try { server.addNetwork(newNetwork); A3CMLDomain domain = (A3CMLDomain) a3cmlConfig.getDomain(domainName); domain.addServer(server); } catch (Exception exc) { // Idempotent } if (serverId == AgentServer.getServerId()) { startScript.add( new StartNetworkCmd(domainName)); } } public void setNetworkPort(String serverName, String domainName, int port) throws Exception { if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, "ConfigController.setNetworkPort(" + serverName + ',' + domainName + ',' + port + ')'); checkStatus(Status.CONFIG); A3CMLServer server = a3cmlConfig.getServer(serverName); A3CMLNetwork network = server.getNetwork(domainName); if (network != null) { network.port = port; } else { throw new Exception("Unknown network"); } if (server.sid == AgentServer.getServerId()) { startScript.add( new ReconfigureServerNetworkCmd(domainName, port)); } else { startScript.add( new ReconfigureClientNetworkCmd( server.sid, domainName, port)); } } public void setJVMArgs(String serverName, String jvmArgs) throws Exception { if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, "ConfigController.setJVMArgs(" + serverName + ',' + jvmArgs + ')'); checkStatus(Status.CONFIG); A3CMLServer server = a3cmlConfig.getServer(serverName); server.jvmArgs = jvmArgs; } public void setProperty(String propName, String value) throws Exception { if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, "ConfigController.setProperty(" + propName + ',' + value + ')'); checkStatus(Status.CONFIG); a3cmlConfig.addProperty( new A3CMLProperty(propName, value)); } public void setServerProperty(String serverName, String propName, String value) throws Exception { if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, "ConfigController.setServerProperty(" + serverName + ',' + propName + +',' + value + ')'); checkStatus(Status.CONFIG); A3CMLServer server = a3cmlConfig.getServer(serverName); server.addProperty(new A3CMLProperty(propName, value)); } public void setServerNat(String serverName, String translatedServerName, String translationHostName, int translationPort) throws Exception { if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, "ConfigController.setServerNat(" + serverName + ',' + translatedServerName + ',' + translationHostName + ',' + translationPort + ')'); checkStatus(Status.CONFIG); A3CMLServer server = a3cmlConfig.getServer(serverName); short sid = a3cmlConfig.getServerIdByName(translatedServerName); server.addNat(new A3CMLNat(sid, translationHostName, translationPort)); } public void removeDomain(String domainName) throws Exception { if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, "ConfigController.removeDomain(" + domainName + ')'); checkStatus(Status.CONFIG); try { Vector serversToRemove = new Vector(); A3CMLDomain domain = a3cmlConfig.getDomain(domainName); for (int i = 0; i < domain.servers.size(); i++) { A3CMLServer server = (A3CMLServer) domain.servers.elementAt(i); if (server.networks.size() == 1) { serversToRemove.addElement(server); } else { removeNetwork(server.name, domainName); } } for (int i = 0; i < serversToRemove.size(); i++) { A3CMLServer server = (A3CMLServer)serversToRemove.elementAt(i); if (server.sid != AgentServer.getServerId()) { removeServer(server.name); } else { // Remove the network removeNetwork(server.name, domainName); } } a3cmlConfig.removeDomain(domainName); } catch (fr.dyade.aaa.agent.conf.UnknownDomainException exc) { // Do nothing (idempotency) } } public void removeNetwork(String serverName, String domainName) throws Exception { if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, "ConfigController.removeNetwork(" + serverName + ',' + domainName + ')'); checkStatus(Status.CONFIG); A3CMLServer server = a3cmlConfig.getServer(serverName); server.removeNetwork(domainName); if (server.sid == AgentServer.getServerId()) { stopScript.addElement(new StopNetworkCmd(domainName)); } } public void removeServer(String serverName) throws Exception { checkStatus(Status.CONFIG); try { A3CMLServer server = a3cmlConfig.getServer(serverName); ServerDesc servDesc = AgentServer.getServerDesc(server.sid); removeServer(servDesc); } catch (fr.dyade.aaa.agent.conf.UnknownServerException exc) { // The server has already been removed. // This may happen e.g. if the domain used // to communicate with it has been deleted. // Idempotent: do nothing } } public void removeServer(short serverId) throws Exception { if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, "ConfigController.removeServer(" + serverId + ')'); try { checkStatus(Status.CONFIG); ServerDesc servDesc = AgentServer.getServerDesc(serverId); removeServer(servDesc); } catch (fr.dyade.aaa.agent.conf.UnknownServerException exc) { // The server has already been removed. // This may happen e.g. if the domain used // to communicate with it has been deleted. // Idempotent: do nothing } } private void removeServer(ServerDesc servDesc) throws Exception { if (servDesc.sid != AgentServer.getServerId()) { deleteServer(servDesc); a3cmlConfig.removeServer(servDesc.sid); } else { // else don't remove the local server throw new Exception("Can't remove local server"); } } private void deleteServer(ServerDesc servDesc) throws Exception { if (servDesc.domain instanceof Network) ((Network) servDesc.domain).delServer(servDesc.sid); AgentServer.removeServerDesc(servDesc.sid); for (Enumeration e = AgentServer.elementsServerDesc(); e.hasMoreElements(); ) { ServerDesc sd = (ServerDesc)e.nextElement(); if (sd.gateway == servDesc.sid) { sd.gateway = -1; sd.domain = null; } } } public void removeService(String serverName, String serviceClassName) throws Exception { checkStatus(Status.CONFIG); A3CMLServer server = a3cmlConfig.getServer(serverName); server.removeService(serviceClassName); } private void stopNetwork(String domainName) throws Exception { AgentServer.removeConsumer(domainName); } private void stopService(String serviceClassName) throws Exception { ServiceManager.stop(serviceClassName); } private void startNetwork(String domainName) throws Exception { if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, "ConfigController.startNetwork(" + domainName + ')'); A3CMLServer a3cmlServer = a3cmlConfig.getServer(AgentServer.getServerId()); A3CMLNetwork a3cmlNetwork = a3cmlServer.getNetwork(domainName); if (a3cmlNetwork == null) throw new Exception( "Unknown network " + domainName); try { Network network = (Network) AgentServer.getConsumer(domainName); network.start(); } catch (Exception exc) { A3CMLDomain a3cmlDomain = (A3CMLDomain) a3cmlConfig.getDomain(domainName); Network network = (Network) Class.forName(a3cmlDomain.network).newInstance(); short[] domainSids = new short[a3cmlDomain.servers.size()]; for (int i = 0; i < domainSids.length; i++) { domainSids[i] = ((A3CMLServer) a3cmlDomain.servers.elementAt(i)).sid; } AgentServer.addConsumer(domainName, network); if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, " -> init network " + a3cmlDomain.name + ',' + a3cmlNetwork.port); network.init(a3cmlDomain.name, a3cmlNetwork.port, domainSids); network.start(); } } private void reconfigureServerNetwork(String domainName, int port) throws Exception { if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, "ConfigController.reconfigureServerNetwork(" + domainName + ',' + port + ')'); Network network = (Network) AgentServer.getConsumer(domainName); network.stop(); network.setPort(port); network.start(); } private void reconfigureClientNetwork(short sid, String domainName, int port) throws Exception { if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, "ConfigController.reconfigureClientNetwork(" + sid + ',' + domainName + ',' + port + ')'); A3CMLServer a3cmlServer = a3cmlConfig.getServer(sid); ServerDesc serverDesc = AgentServer.getServerDesc(sid); if (domainName.equals(serverDesc.getDomainName())) { serverDesc.updateSockAddr( serverDesc.getHostname(), port); } } private void startService(String serviceClassName, String args) throws Exception { if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, "ConfigController.startService(" + serviceClassName + ',' + args + ')'); A3CMLServer a3cmlServer = a3cmlConfig.getServer(AgentServer.getServerId()); ServiceManager.register( serviceClassName, args); ServiceDesc desc = (ServiceDesc) ServiceManager.manager.registry.get( serviceClassName); if (desc.running) return; ServiceManager.start(desc); } private void startServer(short sid) throws Exception { if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, "ConfigController.startServer(" + sid + ')'); A3CMLServer server = a3cmlConfig.getServer(sid); ServerDesc desc = AgentServer.getServerDesc(sid); AgentServer.initServerDesc(desc, server); if (desc.gateway == desc.sid) { if (desc.domain instanceof Network) { ((Network) desc.domain).addServer(server.sid); } else { throw new Error("Unknown gateway type: " + desc.domain); } } } static class StartServerCmd { public short sid; public StartServerCmd(short sid) { this.sid = sid; } } static class StartServiceCmd { public String serviceClassName; public String args; public StartServiceCmd(String serviceClassName, String args) { this.serviceClassName = serviceClassName; this.args = args; } } static class StartNetworkCmd { public String domainName; public StartNetworkCmd(String domainName) { this.domainName = domainName; } } static class StopNetworkCmd { public String domainName; public StopNetworkCmd(String domainName) { this.domainName = domainName; } } static class ReconfigureClientNetworkCmd { public short sid; public String domainName; public int port; public ReconfigureClientNetworkCmd( short sid, String domainName, int port) { this.sid = sid; this.domainName = domainName; this.port = port; } } static class ReconfigureServerNetworkCmd { public String domainName; public int port; public ReconfigureServerNetworkCmd( String domainName, int port) { this.domainName = domainName; this.port = port; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -