Esempio n. 1
0
        public byte[] Receive(long sid, TimeSpan timeout)
        {
            byte[]          buff   = new byte[65536];
            UDPBufferReader reader = GetBufferReader(sid);

            return(reader.Read(timeout));
        }
Esempio n. 2
0
        async Task ReadLoopAsync()
        {
            await Task.Yield();

            while (true)
            {
                //TODO: if not cached , and all stream closed , shutdown directly
                var data = await ReceiveAsync();

                if (data == null)
                {
                    Console.WriteLine("_udp.ReceiveAsync() return null ,Close()");
                    Close();
                    return;
                }
                long sid = BitConverter.ToInt64(data, 8);
                if (sid == -1)
                {
                    Console.WriteLine("_udp.ReceiveAsync() return " + sid + ", " + UDPMeta.GetPackageType(data));
                }

                UDPBufferReader reader = GetBufferReader(sid);
                reader.OnPost(data);
            }
        }
Esempio n. 3
0
        UDPBufferReader GetBufferReader(long sid)
        {
            UDPBufferReader reader;

            lock (buffmap)
            {
                if (_closed)
                {
                    throw (new Exception("closed"));
                }
                if (!buffmap.TryGetValue(sid, out reader))
                {
                    buffmap[sid] = reader = new UDPBufferReader();
                }
            }
            return(reader);
        }