root/trunk/AE-go_GameServer/src/com/aionemu/gameserver/GameServer.java

9901002
16
 */
16
 */
17
package com.aionemu.gameserver;
17
package com.aionemu.gameserver;
18
18
19
import java.util.HashSet;
20
import java.util.Set;
21
19
import org.apache.log4j.Logger;
22
import org.apache.log4j.Logger;
20
23
21
import com.aionemu.commons.database.DatabaseFactory;
24
import com.aionemu.commons.database.DatabaseFactory;
...
...
114
		Runtime.getRuntime().addShutdownHook(new Thread(new ShutdownHook(gs.injector)));
117
		Runtime.getRuntime().addShutdownHook(new Thread(new ShutdownHook(gs.injector)));
115
118
116
		//gs.injector.getInstance(com.aionemu.gameserver.utils.chathandlers.ChatHandlers.class);
119
		//gs.injector.getInstance(com.aionemu.gameserver.utils.chathandlers.ChatHandlers.class);
120
		onStartup();
117
	}
121
	}
118
122
119
	/**
123
	/**
...
...
165
		// Initialize thread pools
169
		// Initialize thread pools
166
		ThreadPoolManager.getInstance();
170
		ThreadPoolManager.getInstance();
167
	}
171
	}
172
	
173
	private static Set<StartupHook> STARTUP_HOOKS = new HashSet<StartupHook>();
174
	
175
	public synchronized static void addStartupHook(StartupHook hook)
176
	{
177
		if (STARTUP_HOOKS != null)
178
			STARTUP_HOOKS.add(hook);
179
		else
180
			hook.onStartup();
181
	}
182
	
183
	private synchronized static void onStartup()
184
	{
185
		final Set<StartupHook> startupHooks = STARTUP_HOOKS;
186
		
187
		STARTUP_HOOKS = null;
188
		
189
		for (StartupHook hook : startupHooks)
190
			hook.onStartup();
191
	}
192
	
193
	public interface StartupHook
194
	{
195
		public void onStartup();
196
	}
168
}
197
}