root/trunk/AE-go_GameServer/src/com/aionemu/gameserver/GameServer.java
| 990 | 1002 | ||
|---|---|---|---|
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 | } |
Download diff