コード例 #1
0
        public override void OnReceived(ITcpSession session, IDynamicBuffer dataBuffer)
        {
            int          cmd = dataBuffer.Buffer[0];
            MemoryStream ms  = new MemoryStream(dataBuffer.Buffer, 1, dataBuffer.DataSize - 1);

            switch (cmd)
            {
            case 1:
            {
                RpcCallData data = Serializer.Deserialize <RpcCallData>(ms);
                ThreadPool.QueueUserWorkItem(CallFunc, new CallStatus()
                    {
                        Session = session, Data = data
                    });
            }
            break;

            case 2:
            {
                var data = Serializer.Deserialize <RpcReturnData>(ms);
                RpcFactory.GetInvoke(session.SessionId).ReturnData(data);
            }
            break;

            default:
            {
                var data = Serializer.Deserialize <RpcErrorInfo>(ms);
                RpcFactory.GetInvoke(session.SessionId).ReturnError(data);
            }
            break;
            }
            ms.Dispose();
        }
コード例 #2
0
 public static void ReceiveCommond(object sender, IDynamicBuffer data)
 {
     if (Interlocked.Increment(ref receiveCount) >= allCount)
     {
         sb.Stop();
         Console.WriteLine("接收{0}次数据完成,运行时间:{1} 秒{2}毫秒", allCount, sb.Elapsed.Seconds, sb.Elapsed.Milliseconds);
     }
 }
コード例 #3
0
ファイル: Program.cs プロジェクト: tim-xia/sunsocket
        public override void OnReceived(ITcpSession session, IDynamicBuffer dataBuffer)
        {
            var result = new byte[dataBuffer.DataSize];

            Buffer.BlockCopy(dataBuffer.Buffer, 0, result, 0, dataBuffer.DataSize);
            //var txt= Encoding.UTF8.GetString(result);
            session.SendAsync(data);
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: luohuazhiyu/sunsocket
 public override void OnReceived(ITcpSession session, IDynamicBuffer dataBuffer)
 {
    // var result = new byte[dataBuffer.DataSize];
     //Buffer.BlockCopy(dataBuffer.Buffer, 0, result, 0, dataBuffer.DataSize);
     //session.SessionData.Set("islogin", true);//设置登录状态
     //var txt= Encoding.UTF8.GetString(result);
     session.SendAsync(data);
 }
コード例 #5
0
ファイル: Program.cs プロジェクト: ciker/GrapeSocket
 public override void OnReceived(ITcpSession session, IDynamicBuffer dataBuffer)
 {
     //Stream str = new MemoryStream();
     // var result = new byte[dataBuffer.DataSize];
     //Buffer.BlockCopy(dataBuffer.Buffer, 0, result, 0, dataBuffer.DataSize);
     //session.SessionData.Set("islogin", true);//设置登录状态
     //var txt= Encoding.UTF8.GetString(result);
     session.SendAsync(data);
 }
コード例 #6
0
        public override void OnReceived(IRUdpSession session, IDynamicBuffer dataBuffer)
        {
            var result = new byte[dataBuffer.DataSize];

            Buffer.BlockCopy(dataBuffer.Buffer, 0, result, 0, dataBuffer.DataSize);
            session.SessionData.Set("islogin", true);//设置登录状态
            var txt = Encoding.UTF8.GetString(result);

            Console.WriteLine(txt);
            // session.SendAsync(data);
        }
コード例 #7
0
        public override void OnReceived(ITcpClientSession session, IDynamicBuffer dataBuffer)
        {
            byte[] result = new byte[dataBuffer.DataSize];
            Buffer.BlockCopy(dataBuffer.Buffer, 0, result, 0, dataBuffer.DataSize);
            TaskCompletionSource <byte[]> tSource;

            if (taskQueue.TryDequeue(out tSource))
            {
                tSource.SetResult(result);
            }
        }
コード例 #8
0
ファイル: IDynamicBuffer.cs プロジェクト: DangerRoss/UpFront
        public static void CopyTo <T>(this ICollection <T> collection, IDynamicBuffer <T> buffer) where T : unmanaged
        {
            var count = collection.Count;

            buffer.Reserve(count);

            foreach (var value in collection)
            {
                buffer.Write(value);
            }
        }
コード例 #9
0
ファイル: Connect.cs プロジェクト: tim-xia/sunsocket
        public override void OnReceived(ITcpClientSession session, IDynamicBuffer dataBuffer)
        {
            int          cmd = dataBuffer.Buffer[0];
            MemoryStream ms  = new MemoryStream(dataBuffer.Buffer, 1, dataBuffer.DataSize - 1);

            switch (cmd)
            {
            case 1:
            {
                RpcCallData data = Serializer.Deserialize <RpcCallData>(ms);
                ThreadPool.QueueUserWorkItem(CallFunc, data);
            }
            break;

            case 2:
            {
                var data = Serializer.Deserialize <RpcReturnData>(ms);
                TaskCompletionSource <byte[]> tSource;
                if (taskDict.TryRemove(data.Id, out tSource))
                {
                    tSource.SetResult(data.Value);
                }
            }
            break;

            default:
            {
                var info = Serializer.Deserialize <RpcErrorInfo>(ms);
                TaskCompletionSource <byte[]> tSource;
                if (taskDict.TryRemove(info.Id, out tSource))
                {
                    tSource.SetException(new Exception(info.Message));
                }
            }
            break;
            }
            ms.Dispose();
        }
コード例 #10
0
ファイル: Program.cs プロジェクト: luohuazhiyu/sunsocket
 public override void OnReceived(ITcpClientSession session, IDynamicBuffer dataBuffer)
 {
     byte[] result = new byte[dataBuffer.DataSize];
     Buffer.BlockCopy(dataBuffer.Buffer, 0, result,0, dataBuffer.DataSize);
     tSource.SetResult(result);
 }
コード例 #11
0
 public override void OnReceived(ITcpClientSession session, IDynamicBuffer dataBuffer)
 {
     Received(session, dataBuffer);
 }
コード例 #12
0
 public override void OnReceived(ITcpClientSession session, IDynamicBuffer dataBuffer)
 {
     byte[] result = new byte[dataBuffer.DataSize];
     Buffer.BlockCopy(dataBuffer.Buffer, 0, result, 0, dataBuffer.DataSize);
     tSource.SetResult(result);
 }
コード例 #13
0
ファイル: TcpServer.cs プロジェクト: ciker/GrapeSocket
 //当接收到命令包时触发
 public virtual void OnReceived(ITcpSession session, IDynamicBuffer dataBuffer)
 {
 }
コード例 #14
0
ファイル: RpcServer.cs プロジェクト: luohuazhiyu/sunsocket
 public override void OnReceived(ITcpSession session, IDynamicBuffer dataBuffer)
 {
     int cmd = dataBuffer.Buffer[0];
     MemoryStream ms = new MemoryStream(dataBuffer.Buffer, 1, dataBuffer.DataSize - 1);
     switch (cmd)
     {
         case 1:
             {
                 RpcCallData data = Serializer.Deserialize<RpcCallData>(ms);
                 ThreadPool.QueueUserWorkItem(CallFunc, new CallStatus() { Session = session, Data = data });
             }
             break;
         case 2:
             {
                 var data = Serializer.Deserialize<RpcReturnData>(ms);
                 RpcFactory.GetInvoke(session.SessionId).ReturnData(data);
             }
             break;
         default:
             {
                 var data = Serializer.Deserialize<RpcErrorInfo>(ms);
                 RpcFactory.GetInvoke(session.SessionId).ReturnError(data);
             }
             break;
     }
     ms.Dispose();
 }
コード例 #15
0
ファイル: Program.cs プロジェクト: luohuazhiyu/sunsocket
 public override void OnReceived(ITcpClientSession session, IDynamicBuffer dataBuffer)
 {
     Received(session, dataBuffer);
 }
コード例 #16
0
ファイル: Program.cs プロジェクト: luohuazhiyu/sunsocket
 public static void ReceiveCommond(object sender, IDynamicBuffer data)
 {
     if (Interlocked.Increment(ref receiveCount) >= allCount)
     {
         sb.Stop();
         Console.WriteLine("接收{0}次数据完成,运行时间:{1} 秒{2}毫秒", allCount, sb.Elapsed.Seconds, sb.Elapsed.Milliseconds);
     }
 }
コード例 #17
0
ファイル: Program.cs プロジェクト: luohuazhiyu/sunsocket
 public override void OnReceived(IRUdpSession session, IDynamicBuffer dataBuffer)
 {
     var result = new byte[dataBuffer.DataSize];
     Buffer.BlockCopy(dataBuffer.Buffer, 0, result, 0, dataBuffer.DataSize);
     var txt = Encoding.UTF8.GetString(result);
     Console.WriteLine(txt);
     session.SendAsync(data);
 }
コード例 #18
0
 //当接收到命令包时触发
 public virtual void OnReceived(ITcpClientSession session, IDynamicBuffer dataBuffer)
 {
 }
コード例 #19
0
ファイル: RUdpServer.cs プロジェクト: luohuazhiyu/sunsocket
 //当接收到命令包时触发
 public virtual void OnReceived(IRUdpSession session, IDynamicBuffer dataBuffer)
 {
 }