public static PacketFactoryManager GetInstance() { if (m_cInstance == null) { m_cInstance = new PacketFactoryManager(); } return m_cInstance; }
protected static PacketFactoryManager m_cInstance; //静态实例 public static PacketFactoryManager GetInstance() { if (m_cInstance == null) { m_cInstance = new PacketFactoryManager(); } return(m_cInstance); }
/// <summary> /// 处理包 /// </summary> private void ProcessPacket() { try { for (; true;) { PacketBase head = Packing.GetPacketHead(this.m_cReceiveBuffer.m_lstBuffer, this.m_cReceiveBuffer.ReadIndex, this.m_cReceiveBuffer.WriteIndex); if (head != null) { byte[] buffer = this.m_cReceiveBuffer.Read(head.m_usPacketSize); buffer = Packing.PackingDecode(buffer, head.m_usPacketSize); if (buffer != null) { //MemoryStream ms = new MemoryStream(buffer); //BinaryFormatter bf = new BinaryFormatter(); //PacketBase pb = (PacketBase)bf.Deserialize(ms); PacketBase pb = PacketFactoryManager.GetInstance().CreatePacket(head.GetPacketID()); StreamBuffer sb = new StreamBuffer(); sb.Init(buffer, buffer.Length); pb.Load(sb); this.m_cDispatch.AckPacket(pb); } else { break; } } else { break; } } } catch (Exception e) { WriteFiles.WritFile.Log(LogerType.ERROR, e.ToString()); DisConnect(); } }