/* Thor Server Project Copyright 2008 Joe Hegarty This file is part of The Thor Server Project. The Thor Server Project is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. The Thor Server Project is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with The Thor Server Project. If not, see . */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using ThorServer.Core; using ThorServer.Net; using ThorServer.Session; using ThorServer.Data; using ThorServer.Game; using ThorServer.Game.Misc; using ThorServer.Utilities; using System.Threading; namespace ThorServer { public static class InstanceManager { private static NetManager mNetManager; private static SessionManager mSessionManager; private static GameManager mGameManager; public static void CreateGameManager() { //Game objects mGameManager = new GameManager(); } public static void StartServer() { Logging.LogEvent("Service started.", Logging.LogLevel.Info); GameConfig.VerifyDatabaseVersion(); ThreadPool.SetMaxThreads(9999, 9999); //Game objects mGameManager = new GameManager(); //Communication objects mSessionManager = new SessionManager(); mNetManager = new NetManager(); } public static class Connections { public static NetConnection GetConnection(long connectionId) { return mNetManager.GetInstance(connectionId); } public static void EndConnection(long connectionid) { mNetManager.EndConnection(connectionid); } public static bool CheckIP(string ip) { return mNetManager.CheckIP(ip); } } public static class Sessions { public static SessionHandler GetSession(long sessionid) { return mSessionManager.GetSession(sessionid); } public static List GetSessionList() { return mSessionManager.GetSessionList(); } public static void BroadcastToAll(ClientMessage message) { mSessionManager.BroadcastToAll(message); } public static void BroadcastCallForHelp(ClientMessage message) { mSessionManager.BroadcastCFH(message); } public static void AddSession(long sessionid) { mSessionManager.StartSession(sessionid); } public static void EndSession(long sessionid) { mSessionManager.EndSession(sessionid); } public static void NewSessionData(long sessionid, string data) { mSessionManager.NewSessionData(sessionid, data); } public static long GetSessionFromUser(int userid) { return mSessionManager.GetSessionForUser(userid); } public static long GetSessionFromUser(string userName) { return mSessionManager.GetSessionForUser(userName); } public static void EnforceUniqueLogon(int userid) { mSessionManager.KillExistingSessions(userid); } public static void InvokeReactorMethod(long sessionId, string method) { mSessionManager.GetSession(sessionId).InvokeMethod(method); } } public static GameManager Game { get { return mGameManager; } } } }