示例#1
0
文件: Rudp.cs 项目: wy182000/mahjong
        public void Send(byte[] buf, int start, int len)
        {
            UnityEngine.Debug.Assert(len > 0);

            IntPtr buffer = Marshal.AllocHGlobal(len);

            Marshal.Copy(buf, 0, buffer, len);
            Rudp_CSharp.rudpaux_send(_u, buffer, len);
            Marshal.FreeHGlobal(buffer);
        }
示例#2
0
文件: Rudp.cs 项目: wy182000/mahjong
 public void Update(byte[] buf, int start, int len, int tick)
 {
     if (buf == null || len == 0)
     {
         Rudp_CSharp.rudpaux_update(_u, IntPtr.Zero, 0, tick);
     }
     else
     {
         Marshal.Copy(buf, start, _buffer, len);
         Rudp_CSharp.rudpaux_update(_u, _buffer, len, tick);
     }
 }
示例#3
0
文件: Rudp.cs 项目: wy182000/mahjong
 protected override void Dispose(bool disposing)
 {
     if (_disposed)
     {
         return;
     }
     if (disposing)
     {
         // 清理托管资源,调用自己管理的对象的Dispose方法
     }
     // 清理非托管资源
     Marshal.FreeHGlobal(_buffer);
     Rudp_CSharp.rudpaux_free(_u);
     _disposed = true;
 }
示例#4
0
文件: Rudp.cs 项目: wy182000/mahjong
        public Rudp(SharpC sharpc, int send_delay, int expired_time)
        {
            _sharpc = sharpc;

            SharpC.CSObject cso0 = sharpc.CacheObj(this);
            SharpC.CSObject cso1 = sharpc.CacheFunc(RSend);
            SharpC.CSObject cso2 = sharpc.CacheFunc(RRecv);

            _u = Rudp_CSharp.rudpaux_alloc(send_delay, expired_time, cso0, cso1, cso2);

            _buffer = Marshal.AllocHGlobal(3072);

            _sendBuffer = new byte[3072];
            _recvBuffer = new byte[3072];
        }
示例#5
0
        public Rudp(SharpC sharpc, int send_delay, int expired_time)
        {
            _sharpc = sharpc;

            SharpC.CSObject cso0 = SharpC.CacheObj(this);
            SharpC.CSObject cso1 = SharpC.CacheFunc(RSend);
            SharpC.CSObject cso2 = SharpC.CacheFunc(RRecv);
            SharpC.CSObject cso3 = new SharpC.CSObject();
            cso3.type = SharpC.CSType.INTPTR;
            cso3.ptr  = _sharpc.CPtr;

            _u = Rudp_CSharp.rudpaux_alloc(send_delay, expired_time, cso3, cso0, cso1, cso2);

            _buffer = Marshal.AllocHGlobal(3072); // 单线程

            _sendBuffer = new byte[3072];
            _recvBuffer = new byte[3072];
        }
示例#6
0
 public void Send(byte[] buf, int start, int len)
 {
     UnityEngine.Debug.Assert(len <= 3072);
     Marshal.Copy(buf, start, _buffer, len);
     Rudp_CSharp.rudpaux_send(_u, _buffer, len);
 }