public void Start(IComServerParameter parameter) { Stop(); mParameter = parameter; mTcpSrv.ReceiveData += RPC.RPCNetworkMgr.Instance.ServerReceiveData; mRegisterConnect.ReceiveData += RPC.RPCNetworkMgr.Instance.ClientReceiveData; mRegisterConnect.NewConnect += this.OnRegisterConnected; ServerFrame.DB.AsyncExecuteThreadManager.Instance.InitManager(2); ServerFrame.DB.AsyncExecuteThreadManager.Instance.StartThread(); mRegisterConnect.Connect(parameter.RegServerIP, parameter.RegServerPort); mLinkState = ComServerState.WaitRegServer; this.UserRoleManager.DBConnect.OpenConnect(); Log.FileLog.Instance.Begin("ComServer.log", false); Log.Log.Server.Print("ComServer Start!"); Log.FileLog.Instance.Flush(); IServer.LoadAllTemplateData(ServerCommon.ServerConfig.Instance.TemplatePath); ServerCommon.TemplateTableLoader.LoadTable(ServerCommon.ServerConfig.Instance.TablePath); this.UserRoleManager.DownloadPlanesData(); this.UserRoleManager.DownloadRankData(); this.UserRoleManager.RankInit(); Com.GuildManager.Instance.Init(); this.WolrdManager.Init(UserRoleManager.Planes.Values.ToArray()); }
void OnRegisterConnected(Iocp.TcpClient pClient, byte[] pData, int nLength) { if (nLength == 0) { return; } RPC.PackageWriter pkg = new RPC.PackageWriter(); H_RPCRoot.smInstance.HGet_RegServer(pkg).RegComServer(pkg, mParameter.ListenIP, mParameter.ServerId); pkg.WaitDoCommand(mRegisterConnect, RPC.CommandTargetType.DefaultType, new System.Diagnostics.StackTrace(1, true)).OnFarCallFinished = delegate(RPC.PackageProxy _io, bool bTimeOut) { System.Diagnostics.Debug.WriteLine("公共信息通讯服务器({0})启动并且注册成功,可以等待位面服务器接入了", mParameter.ServerId); UInt16 listenPort = 0; _io.Read(out listenPort); mParameter.ListenPort = listenPort; if (mLinkState != ComServerState.Working) { if (false == mTcpSrv.Open(Iocp.TcpOption.ForComServer, mParameter.ListenPort)) { return; } } mLinkState = ComServerState.Working; }; }
public void UnregisterComServer(string connectionName, string connectionId, string filename, string clsid) { EnsureValidClientConnection(connectionName, connectionId); ComServerState comServerState = new ComServerState(filename, clsid); Boolean register = false; StateManager.Current.Transition(connectionName, comServerState, register); }