public override void Process() { using (var recvfmProtocol = new PT_Server_RegisterAtCenter_RQ()) { recvfmProtocol.Deserialize(m_recvPacket); using (var sendfmProtocol = new PT_Server_RegisterAtCenter_RS()) { var OSD = new descOtherServer { m_nSequence = recvfmProtocol.m_nSequence, m_eServerType = recvfmProtocol.m_eServerType, m_strIP = recvfmProtocol.m_strIP, m_nPort = recvfmProtocol.m_nPort, m_eState = eState.eState_Ready, }; m_session.m_descServer = OSD; bool isAdded = RegisteredServerManager.Instance.TryAdd(OSD, m_session); if (true == isAdded) { sendfmProtocol.m_eErrorCode = eErrorCode.Success; Logger.Info("Success. Registed Server: {0} - Sequnce {1}", OSD.m_eServerType, OSD.m_nSequence); } else { sendfmProtocol.m_eErrorCode = eErrorCode.Server_FailRegister; Logger.Error("Failed. Registed Server: {0} - Sequnce {1}", OSD.m_eServerType, OSD.m_nSequence); } m_session.SendPacket(sendfmProtocol); } } }
public void Remove(descOtherServer desc) { if (null == desc) { Logger.Error("RegisteredServerManager Remove desc == null"); return; } lock (m_lockObject) { if (false == m_dicOtherServers.ContainsKey(desc.m_eServerType)) { return; } fmOtherServer otherSvr = m_dicOtherServers[desc.m_eServerType].Find(x => x.m_desc.m_nSequence == desc.m_nSequence); if (null == otherSvr) { return; } m_dicOtherServers[desc.m_eServerType].Remove(otherSvr); using (otherSvr) { Logger.Debug("RegisteredServerManager Remove desc {0} {1}", otherSvr.m_desc.m_eServerType, otherSvr.m_desc.m_nSequence); } } if (desc.m_eServerType == eServerType.Game) { SendWolrdList(); } }
public bool TryAdd(descOtherServer desc, ServerSession session) { if (null == desc) { Logger.Error("RegisteredServerManager Add desc == null"); return(false); } lock (m_lockObject) { if (false == m_dicOtherServers.ContainsKey(desc.m_eServerType)) { m_dicOtherServers.Add(desc.m_eServerType, new List <fmOtherServer>()); } foreach (var node in m_dicOtherServers[desc.m_eServerType]) { if (node.m_desc.m_nSequence == desc.m_nSequence) { Logger.Error("RegisteredServerManager Same Sequence {0}", node.m_desc.m_nSequence); return(false); } } m_dicOtherServers[desc.m_eServerType].Add(new fmOtherServer { m_session = session, m_desc = desc }); Logger.Debug("RegisteredServerManager Add Sequence {0}", desc.m_nSequence); } return(true); }