Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        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();
        }
Ejemplo n.º 6
0
 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));
     }
 }
Ejemplo n.º 7
0
        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();
        }
Ejemplo n.º 8
0
		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();
		}
Ejemplo n.º 9
0
        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();
        }