示例#1
0
        static async Task ReadCommand(IFiberRw fiberRw)
        {
            var cmd = await fiberRw.ReadInt32();

            switch (cmd)
            {
            case 1001:
            {
                var isSuccess = await fiberRw.ReadBoolean();

                Console.WriteLine(await fiberRw.ReadString());

                if (isSuccess)
                {
                    Data data = new Data()
                    {
                        Id   = Guid.NewGuid(),
                        Time = DateTime.Now
                    };

                    await await fiberRw.Sync.Ask(() =>
                        {
                            fiberRw.Write(2000);     //发送数据
                            fiberRw.Write(data);


                            fiberRw.Write(3000);     //发送消息
                            fiberRw.Write("EMMMMMMMMMMMMMMMMMMMMM...");
                            return(fiberRw.Flush());
                        });
                }
            }
            break;

            case 3001:
            {
                using (var data = await fiberRw.ReadMemory())
                {
                    Console.WriteLine(data.Value.Length);

                    await await fiberRw.Sync.Ask(() =>
                        {
                            fiberRw.Write(3000);
                            fiberRw.Write("EMMMMMMMMMMMMMMMMMMMMM");
                            return(fiberRw.Flush());
                        });
                }
            }
            break;
            }
        }
示例#2
0
        static async ValueTask DataOnByLine(IFiberRw fiberRw)
        {
            var len = await fiberRw.ReadInt32();

            var cmd = await fiberRw.ReadInt32();

            var p1 = await fiberRw.ReadInt32();

            var p2 = await fiberRw.ReadInt64();

            var p3 = await fiberRw.ReadDouble();

            var p4 = await fiberRw.ReadSingle();

            var p5 = await fiberRw.ReadBoolean();

            var p6 = await fiberRw.ReadBoolean();

            var p7 = await fiberRw.ReadString();



            using (var p8 = await fiberRw.ReadMemory())
            {
                var p9 = await fiberRw.ReadInt16();

                var p10 = await fiberRw.ReadObject <List <Guid> >();


                //fiberRw.Write(len);
                //fiberRw.Write(cmd);
                //fiberRw.Write(p1);
                //fiberRw.Write(p2);
                //fiberRw.Write(p3);
                //fiberRw.Write(p4);
                //fiberRw.Write(p5);
                //fiberRw.Write(p6);
                //fiberRw.Write(p7);
                //fiberRw.Write(p8);
                //fiberRw.Write(p9);
                //// fiberRw.Write(p10);
                //await fiberRw.Flush();
            }
        }
示例#3
0
        static async Task <bool> ReadCommand(IFiberRw <UserInfo> fiberRw)
        {
            int?cmd = await fiberRw.ReadInt32();

            switch (cmd)
            {
            case 1000:     //用户登入,我们需要读取一个用户名 一个密码 然后验证
            {
                string username = await fiberRw.ReadString();

                string password = await fiberRw.ReadString();

                if (string.Equals(username, "test", StringComparison.Ordinal) && string.Equals(password, "password", StringComparison.Ordinal))
                {
                    fiberRw.UserToken = new UserInfo()
                    {
                        UserName = username,
                        Password = password
                    };

                    await await fiberRw.Sync.Ask(() =>
                        {
                            fiberRw.Write(1001);      //发送登入成功
                            fiberRw.Write(true);
                            fiberRw.Write("logon ok");
                            return(fiberRw.Flush());
                        });
                }
                else
                {
                    await await fiberRw.Sync.Ask(() =>
                        {
                            fiberRw.Write(1001);     //发送登入失败
                            fiberRw.Write(false);
                            fiberRw.Write("logon fail");
                            return(fiberRw.Flush());
                        });
                }
            }
            break;

            case 2000:     //读取一个数据 然后保存到当前用户对象中
            {
                if (fiberRw.UserToken != null)
                {
                    fiberRw.UserToken.Data = await fiberRw.ReadObject <TestLib.Data>();
                }
                else
                {
                    fiberRw.Async.Disconnect();
                }
            }
            break;

            case 3000:     //在屏幕上显示消息 然后告诉客户端显示成功
            {
                using (var data = await fiberRw.ReadMemory())
                {
                    await await fiberRw.Sync.Ask(() =>
                        {
                            fiberRw.Write(3001);
                            fiberRw.Write("msg show");
                            return(fiberRw.Flush());
                        });
                }
            }
            break;
            }

            return(false);
        }