예제 #1
0
 private static async Task SendTest(IFiberRw fiberRw)
 {
     fiberRw.Write((++id).ToString());
     fiberRw.Write(new Random().Next(10, 10000));
     fiberRw.Write(new Random().Next(10, 10000).ToString());
     await fiberRw.Flush();
 }
예제 #2
0
        protected virtual async Task DataOnByLine(IFiberRw fiberRw)
        {
            using (ReadBytes read = new ReadBytes(fiberRw))
            {
                await read.Init();

                var cmd = read.ReadInt32();

                switch (cmd)
                {
                case 2000:     //set session
                {
                    var sessionid = (read.ReadInt64()).GetValueOrDefault(0);
                    Log.TraceFormat("save sessionid {0}", sessionid);
                    Session.SaveSessionId(sessionid);
                }
                break;

                case 2400:     //Call It
                {
                    await Calling(read);
                }
                break;

                case 2500:     //set result
                {
                    ReadResult(read);
                }
                break;

                default:
                    throw new NetxException($"data error:{cmd.GetValueOrDefault()}", ErrorType.ReadErr);
                }
            }
        }
예제 #3
0
        static async ValueTask DataOnByLine(IFiberRw <string> fiberRw)
        {
            var id = await fiberRw.ReadString();

            async void Send()
            {
                try
                {
                    await fiberRw.Sync.Ask(() =>
                    {
                        fiberRw.Write(id);
                    });

                    await fiberRw.Sync.Delay(10, () =>
                    {
                        return(fiberRw.FlushAsync());
                    });
                }
                catch (System.Net.Sockets.SocketException)
                {
                    fiberRw.Async.Disconnect();
                }
            };

            Send();
        }
예제 #4
0
        private static async Task SendTest(IFiberRw fiberRw)
        {
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);

            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);

            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1\r\n"), false);



            await fiberRw.FlushAsync();
        }
예제 #5
0
파일: Program.cs 프로젝트: Mrwch/ZYSOCKET-V
        private static void SendTest(IFiberRw fiberRw)
        {
            using (WriteBytes writeBytes = new WriteBytes(fiberRw))
            {
                writeBytes.WriteLen();
                writeBytes.Cmd(1001);
                writeBytes.Write(2);
                writeBytes.Write(5L);
                writeBytes.Write(5.5);
                writeBytes.Write(4.3f);
                writeBytes.Write(true);
                writeBytes.Write(false);
                writeBytes.Write("AAAAAAAAAAAAAA");
                writeBytes.Write("BBBBBBBBBBBBBBBB");
                writeBytes.Write((short)111);

                List <Guid> guids = new List <Guid>();
                for (int i = 0; i < 10000; i++)
                {
                    guids.Add(Guid.NewGuid());
                }
                writeBytes.Write(guids);
                writeBytes.Flush();
            }
        }
예제 #6
0
        static void  DataOn(ReadBytes read, IFiberRw <string> fiberRw)
        {
            var cmd = read.ReadInt32();
            var p1  = read.ReadInt32();
            var p2  = read.ReadInt64();
            var p3  = read.ReadDouble();
            var p4  = read.ReadSingle();
            var p5  = read.ReadBoolean();
            var p6  = read.ReadBoolean();
            var p7  = read.ReadString();
            var p8  = read.ReadMemory();
            var p9  = read.ReadInt16();


            // var p10 = read.ReadObject<List<Guid>>();
            // read.Dispose();


            using (WriteBytes writeBytes = new WriteBytes(fiberRw))
            {
                writeBytes.WriteLen();
                writeBytes.Cmd(cmd);
                writeBytes.Write(p1);
                writeBytes.Write(p2);
                writeBytes.Write(p3);
                writeBytes.Write(p4);
                writeBytes.Write(p5);
                writeBytes.Write(p6);
                writeBytes.Write(p7);
                writeBytes.Write(p8);
                writeBytes.Write(p9);
                //writeBytes.Write(p10);
                writeBytes.Flush();
            }
        }
예제 #7
0
        protected virtual async Task ReadResultAsync(IFiberRw fiberRw)
        {
            var id = await fiberRw.ReadInt64();

            if (await fiberRw.ReadBoolean()) //is error
            {
                AsyncBackResult(new Result()
                {
                    Id       = id,
                    ErrorId  = await fiberRw.ReadInt32(),
                    ErrorMsg = await fiberRw.ReadString()
                });
            }
            else
            {
                var count = await fiberRw.ReadInt32();

                List <byte[]> args = new List <byte[]>(count);
                for (int i = 0; i < count; i++)
                {
                    args.Add(await fiberRw.ReadArray());
                }

                AsyncBackResult(new Result(args)
                {
                    Id = id
                });
            }
        }
예제 #8
0
        public async void queries(string queryString, IFiberRw <HttpToken> fiberRw, WriteBytes write)
        {
            int count = 1;

            if (!string.IsNullOrEmpty(queryString))
            {
                var values = queryString.Split('=');
                if (values.Length > 1)
                {
                    if (int.TryParse(values[1], out int size))
                    {
                        count = size;
                    }
                }
            }
            if (count > 500)
            {
                count = 500;
            }
            if (count < 1)
            {
                count = 1;
            }
            try
            {
                var data = await fiberRw.UserToken.Db.LoadMultipleQueriesRows(count);

                await JsonSerializer.NonGeneric.Utf8.SerializeAsync(data, write.Stream);
            }
            catch (Exception e_)
            {
                write.Write(e_.Message);
            }
            OnCompleted(fiberRw, write);
        }
예제 #9
0
 public void Json(IFiberRw<HttpToken> fiberRw,ref WriteBytes write)
 {
     JsonMessage jsonMessage = default(JsonMessage);
     jsonMessage.message = "Hello, World!";          
      JsonFormatter.SerializeObject(jsonMessage,write.Stream,System.Text.Encoding.UTF8);
     OnCompleted(fiberRw, write);
 }
예제 #10
0
        public async Task Receive(IFiberRw <HttpToken> fiberRw, Memory <byte> memory_r, Memory <byte> memory_w)
        {
            var data = (await fiberRw.ReadLine(memory_r));

            ReadHander(fiberRw, ref memory_r, ref memory_w, ref data);
            fiberRw.StreamReadFormat.Position = fiberRw.StreamReadFormat.Length;
        }
예제 #11
0
        public void Json(IFiberRw <HttpToken> fiberRw, ref WriteBytes write)
        {
            JsonMessage jsonMessage = default(JsonMessage);

            jsonMessage.message = "Hello, World!";
            JsonSerializer.NonGeneric.Utf8.SerializeAsync(jsonMessage, write.Stream);
            OnCompleted(fiberRw, write);
        }
예제 #12
0
 static async ValueTask DataOnByLine(IFiberRw fiberRw)
 {
     using (var buffer = await fiberRw.ReadLine())
     {
         var str = System.Text.Encoding.Default.GetString(buffer.Value.Span);
         Console.WriteLine(str);
     }
 }
예제 #13
0
        internal AsyncToken CreateAsynToken(IFiberRw <AsyncToken> fiberRw, ConcurrentDictionary <int, MethodRegister> asyncServicesRegisterDict)
        {
            var sessionId = MakeSessionId();
            var token     = new AsyncToken(Container, fiberRw, asyncServicesRegisterDict, sessionId);

            Log.TraceFormat("make token sessionId:{0}", sessionId);
            return(token);
        }
예제 #14
0
 public AsyncToken(IServiceProvider container, IFiberRw <AsyncToken> fiberRw, ConcurrentDictionary <int, MethodRegister> asyncServicesRegisterDict, long sessionId)
     : base(container, fiberRw, sessionId)
 {
     this.RequestOutTime         = container.GetRequiredService <IOptions <ServiceOption> >().Value.ClearRequestTime;
     ActorRun                    = container.GetRequiredService <ActorRun>();
     AsyncServicesRegisterDict   = asyncServicesRegisterDict;
     asyncControllerInstanceDict = new Lazy <Dictionary <Type, AsyncController> >();
 }
예제 #15
0
 private static async Task SendTest(IFiberRw fiberRw)
 {
     await await fiberRw.Sync.Ask(() =>
     {
         fiberRw.Write((++id).ToString());
         return(fiberRw.Flush());
     });
 }
예제 #16
0
        private async void OnCompleted(IFiberRw <HttpToken> fiberRw, WriteBytes write)
        {
            var token  = fiberRw.UserToken;
            var length = write.Stream.Length - token.HttpHandlerPostion;

            write.Stream.Position = token.ContentPostion.postion;
            write.Write(length.ToString(), false);
            await write.FlushAsync();
        }
예제 #17
0
 public ReadBytes(IFiberRw readFiber)
 {
     this.FiberRw   = readFiber;
     this.Packerlen = -1;
     Memory         = null;
     MemoryOwner    = null;
     HandLen        = (int)LenType;
     IsLittleEndian = FiberRw.IsLittleEndian;
 }
예제 #18
0
        public async void Plaintext(IFiberRw <HttpToken> fiberRw, WriteBytes write)
        {
            write.Write(_result_plaintext.Data, 0, _result_plaintext.Length);
            var length = write.Stream.Length - fiberRw.UserToken.HttpHandlerPostion;

            write.Stream.Position = fiberRw.UserToken.ContentPostion.postion;
            write.Write(length.ToString(), false);
            await write.Flush();
        }
예제 #19
0
        static async void RunIng(IFiberRw <string> fiberRw, string id, int time)
        {
            Console.WriteLine($"{id} start");
            await Task.Delay(time);

            Console.WriteLine($"{id} close");

            fiberRw.Write(id);
            await fiberRw.Flush();
        }
예제 #20
0
        static async ValueTask DataOnByLine(IFiberRw <string> fiberRw)
        {
            var id = await fiberRw.ReadString();

            int waittime = await fiberRw.ReadInt32();

            var p = await fiberRw.ReadString();

            RunIng(fiberRw, id, waittime);
        }
예제 #21
0
 public AsyncBase(IServiceProvider container, IFiberRw <AsyncToken> fiberRw, long sessionId)
 {
     Container  = container;
     SessionId  = sessionId;
     FiberRw    = fiberRw;
     IsConnect  = true;
     IWrite     = fiberRw;
     Log        = new DefaultLog(container.GetRequiredService <ILogger <AsyncToken> >());
     IdsManager = container.GetRequiredService <IIds>();
 }
예제 #22
0
        static async ValueTask DataOnByLine(IFiberRw <string> fiberRw)
        {
            var id = await fiberRw.ReadString();

            await await fiberRw.Sync.Ask(() =>
            {
                fiberRw.Write(id);
                return(fiberRw.Flush());
            });
        }
예제 #23
0
        public void Default(IFiberRw <HttpToken> fiberRw, ref WriteBytes write)
        {
            write.Write("<b> zysocket server</b><hr/>");
            write.Write($"error not found!");

            var length = write.Stream.Length - fiberRw.UserToken.HttpHandlerPostion;

            write.Stream.Position = fiberRw.UserToken.ContentPostion.postion;
            write.Write(length.ToString(), false);
            write.Flush();
        }
예제 #24
0
 protected async Task <bool> ResetToken(IFiberRw <AsyncToken> fiberRw, AsyncToken token)
 {
     if (token.IsConnect)
     {
         token.DisconnectIt();
         return(false);
     }
     token.Reset(fiberRw);
     fiberRw.UserToken = token;
     return(await token.RunIt());
 }
예제 #25
0
        protected async Task <bool> RunCreateToken(IFiberRw <AsyncToken> fiberRw)
        {
            var token = TokenFactory.CreateAsynToken(fiberRw, AsyncServicesRegisterDict);

            if (!ActorTokenDict.TryAdd(token.SessionId, token))
            {
                ActorTokenDict.AddOrUpdate(token.SessionId, token, (a, b) => token);
            }

            fiberRw.UserToken = token;
            return(await token.RunIt());
        }
예제 #26
0
        public async void Json(IFiberRw <HttpToken> fiberRw, WriteBytes write)
        {
            JsonMessage jsonMessage = default(JsonMessage);

            jsonMessage.message = "Hello, World!";
            JsonFormatter.SerializeObject(jsonMessage, write.Stream, System.Text.Encoding.UTF8);
            var length = write.Stream.Length - fiberRw.UserToken.HttpHandlerPostion;

            write.Stream.Position = fiberRw.UserToken.ContentPostion.postion;
            write.Write(length.ToString(), false);
            await write.Flush();
        }
예제 #27
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;
            }
        }
예제 #28
0
        private async void OnCompleted(IFiberRw <HttpToken> fiberRw, WriteBytes write)
        {
            Task <int> WSend()
            {
                var length = write.Stream.Length - fiberRw.UserToken.HttpHandlerPostion;

                write.Stream.Position = fiberRw.UserToken.ContentPostion.postion;
                write.Write(length.ToString(), false);
                write.Flush(false);
                return(fiberRw.Flush());
            }

            await await fiberRw.Sync.Ask(WSend);
        }
예제 #29
0
파일: ServiceBase.cs 프로젝트: luyikk/NetX
        protected async Task SendToMessage(IFiberRw fiberRw, string msg)
        {
            using var wrtokenerr = new WriteBytes(fiberRw);
            wrtokenerr.WriteLen();
            wrtokenerr.Cmd(1001);
            wrtokenerr.Write(msg);

            Task WSend()
            {
                return(wrtokenerr.FlushAsync());
            }

            await await fiberRw.Sync.Ask(WSend);
        }
예제 #30
0
        public async void db(IFiberRw <HttpToken> fiberRw, WriteBytes write)
        {
            try
            {
                var data = await fiberRw.UserToken.Db.LoadSingleQueryRow();

                await JsonFormatter.SerializeObjectAsync(data, write.Stream, System.Text.Encoding.UTF8);
            }
            catch (Exception e_)
            {
                write.Write(e_.Message);
            }

            OnCompleted(fiberRw, write);
        }