public void send(NetworkInterface networkInterface) { fini(true); if (networkInterface.valid()) { for (int i = 0; i < streamList.Count; i++) { stream = streamList[i]; networkInterface.send(stream.getbuffer()); } } else { Dbg.ERROR_MSG("Bundle::send: networkInterface invalid!"); } // 把不用的MemoryStream放回缓冲池,以减少垃圾回收的消耗 for (int i = 0; i < streamList.Count; ++i) { streamList[i].reclaimObject(); } streamList.Clear(); stream.clear(); // 我们认为,发送完成,就视为这个bundle不再使用了, // 所以我们会把它放回对象池,以减少垃圾回收带来的消耗, // 如果需要继续使用,应该重新Bundle.createObject(), // 如果外面不重新createObject()而直接使用,就可能会出现莫名的问题, // 仅以此备注,警示使用者。 Bundle.reclaimObject(this); }
public IEnumerator sendCoroutine(NetworkInterface networkInterface, uint fId, PacketHolder par) { fini(true); Debug.Log("message Number " + streamList.Count); bool resp = false; if (networkInterface.valid()) { for (int i = 0; i < streamList.Count; i++) { stream = streamList[i]; networkInterface.send(stream.getbuffer(), delegate(Packet p) { par.packet = p; resp = true; }, fId); Log.Sys("SendNetworkSuc"); } } else { Dbg.ERROR_MSG("Bundle::send: networkInterface invalid!"); } streamList.Clear(); stream = new MemoryStream(); while (!resp) { yield return(null); } }
public bool sendUdp(MemoryStream stream) { if (!validUdp()) { throw new ArgumentException("invalid udpSocket!"); } SocketAsyncEventArgs a = new SocketAsyncEventArgs(); a.Completed += new EventHandler <SocketAsyncEventArgs>(sendtoCompleteCallBack); a.SetBuffer(stream.getbuffer(), 0, stream.getbuffer().Length); a.RemoteEndPoint = new IPEndPoint(IPAddress.Parse(KBEngineApp.app.baseappIP), KBEngineApp.app.baseappPort); _udpSocket.SendToAsync(a); if (_packetSender == null) { _packetSender = new PacketSender(this); } return(_packetSender.send(stream)); }
public void send(NetworkInterface networkInterface) { fini(true); for (int i = 0; i < streamList.Count; i++) { stream = streamList[i]; networkInterface.send(stream.getbuffer()); } streamList.Clear(); stream = new MemoryStream(); }
public void send(NetworkInterface networkInterface) { fini(true); for(int i=0; i<streamList.Count; i++) { stream = streamList[i]; networkInterface.send(stream.getbuffer()); } streamList.Clear(); stream = new MemoryStream(); }
static int getbuffer(IntPtr L) { try { ToLua.CheckArgsCount(L, 1); KBEngine.MemoryStream obj = (KBEngine.MemoryStream)ToLua.CheckObject <KBEngine.MemoryStream>(L, 1); byte[] o = obj.getbuffer(); ToLua.Push(L, o); return(1); } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e)); } }
public void send(NetworkInterface networkInterface) { fini(true); if (networkInterface.valid()) { for (int i = 0; i < streamList.Count; i++) { stream = streamList[i]; networkInterface.send(stream.getbuffer()); } } else { Dbg.ERROR_MSG("Bundle::send: networkInterface invalid!"); } streamList.Clear(); stream = new MemoryStream(); }
public void send(NetworkInterface networkInterface) { fini(true); if(networkInterface.valid()) { for(int i=0; i<streamList.Count; i++) { stream = streamList[i]; networkInterface.send(stream.getbuffer()); } } else { Dbg.ERROR_MSG("Bundle::send: networkInterface invalid!"); } streamList.Clear(); stream = new MemoryStream(); }
void sendImm(NetworkInterface networkInterface, uint fId) { fini(true); Debug.Log("message Number " + streamList.Count); //bool resp = false; if (networkInterface.valid()) { for (int i = 0; i < streamList.Count; i++) { stream = streamList[i]; networkInterface.send(stream.getbuffer(), delegate(Packet p) { //par.packet = p; //resp = true; }, fId); } } else { Dbg.ERROR_MSG("Bundle::send: networkInterface invalid!"); } streamList.Clear(); stream = new MemoryStream(); }