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; } }
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(); }
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.Flush(); }
private static async Task SendTest(IFiberRw fiberRw) { await await fiberRw.Sync.Ask(() => { fiberRw.Write((++id).ToString()); return(fiberRw.Flush()); }); }
static async ValueTask DataOnByLine(IFiberRw <string> fiberRw) { var id = await fiberRw.ReadString(); await await fiberRw.Sync.Ask(() => { fiberRw.Write(id); return(fiberRw.Flush()); }); }
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(); }
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) { TestLib.Data data = new TestLib.Data() { Id = Guid.NewGuid(), Time = DateTime.Now }; fiberRw.Write(2000); //发送数据 fiberRw.Write(data); await fiberRw.Flush(); fiberRw.Write(3000); //发送消息 fiberRw.Write("EMMMMMMMMMMMMMMMMMMMMM..."); await fiberRw.Flush(); } } break; case 3001: { Console.WriteLine(await fiberRw.ReadString()); } break; } }
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); }
static async void RunIng(IFiberRw <string> fiberRw, string id, int time) { try { Console.WriteLine($"{id} start"); await Task.Delay(time); Console.WriteLine($"{id} close"); fiberRw.Write(id); await fiberRw.Flush(); } catch (Exception er) { Console.WriteLine(er.Message); } }
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(); } }
public async void fortunes(IFiberRw <HttpToken> fiberRw, WriteBytes write) { try { var data = await fiberRw.UserToken.Db.LoadFortunesRows(); Task <int> WSend() { write.Write(_fortunesTableStart.Data, 0, _fortunesTableStart.Length); foreach (var item in data) { write.Write(_fortunesRowStart.Data, 0, _fortunesRowStart.Length); write.Write(item.Id.ToString(CultureInfo.InvariantCulture), false); write.Write(_fortunesColumn.Data, 0, _fortunesColumn.Length); write.Write(System.Web.HttpUtility.HtmlEncode(item.Message), false); write.Write(_fortunesRowEnd.Data, 0, _fortunesRowEnd.Length); } write.Write(_fortunesTableEnd.Data, 0, _fortunesTableEnd.Length); 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()); } if (fiberRw.UserToken != null) { await await fiberRw.Sync.Ask(WSend); } } catch (Exception e_) { write.Write(e_.Message); OnCompleted(fiberRw, write); } }
async Task ReadCommand(IFiberRw fiberRw) { var cmd = await fiberRw.ReadInt32(); switch (cmd) { case 1001: { var isSuccess = await fiberRw.ReadBoolean(); if (isSuccess) { await fiberRw.ReadString(); await await fiberRw.Sync.Ask(() => { fiberRw.Write(2000); return(fiberRw.Flush()); }); } else { string msg = await fiberRw.ReadString(); this.BeginInvoke(new EventHandler((a, b) => { MessageBox.Show(msg); LogOn(); })); } } break; case 2001: { var list = await fiberRw.ReadObject <List <string> >(); this.BeginInvoke(new EventHandler((a, b) => { this.listView1.Items.Clear(); this.comboBox1.Items.Clear(); foreach (var item in list) { this.listView1.Items.Add(new ListViewItem(item)); } this.comboBox1.Items.Add("ALL"); this.comboBox1.Items.AddRange(list.ToArray()); })); } break; case 2002: //通知新用户登入 { var user = await fiberRw.ReadString(); this.BeginInvoke(new EventHandler((a, b) => { this.listView1.Items.Add(user, user, 0); this.comboBox1.Items.Add(user); })); } break; case 3001: { string username = await fiberRw.ReadString(); string msg = await fiberRw.ReadString(); this.BeginInvoke(new EventHandler((a, b) => { this.richTextBox1.AppendText($"{username}:{msg}\r\n"); })); } break; case 3002: { string username = await fiberRw.ReadString(); string msg = await fiberRw.ReadString(); this.BeginInvoke(new EventHandler((a, b) => { this.richTextBox1.AppendText($"{username}>>{msg}\r\n"); })); } break; case 4000: { string username = await fiberRw.ReadString(); this.BeginInvoke(new EventHandler((a, b) => { this.listView1.Items.RemoveByKey(username); this.comboBox1.Items.Remove(username); })); } break; } }
static async Task 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 }; //fiberRw.Async.UserToken = fiberRw.UserToken; //我们可以断开后对userinfo做一些事情 //(已无效,默认 fiberRw.Async.UserToken 就等于 fiberRw.UserToken) fiberRw.Write(1001); //发送登入成功 fiberRw.Write(true); fiberRw.Write("logon ok"); await fiberRw.Flush(); } else { fiberRw.Write(1001); //发送登入失败 fiberRw.Write(false); fiberRw.Write("logon fail"); await fiberRw.Flush(); } } break; case 2000: //读取一个数据 然后保存到当前用户对象中 { if (fiberRw.UserToken != null) { fiberRw.UserToken.Data = await fiberRw.ReadObject <TestLib.Data>(); } else { fiberRw.Async.Disconnect(); } } break; case 3000: //在屏幕上显示消息 然后告诉客户端显示成功 { string msg = await fiberRw.ReadString(); Console.WriteLine(msg); fiberRw.Write(3001); fiberRw.Write("msg show"); await fiberRw.Flush(); } break; } }
static async Task ReadCommand(IFiberRw <UserInfo> fiberRw) { int?cmd = await fiberRw.ReadInt32(); switch (cmd) { case 1000: //用户登入,我们需要读取一个用户名 一个密码 然后验证 { string username = await fiberRw.ReadString(); string password = await fiberRw.ReadString(); if (CheckLogOn(username, password)) { Console.WriteLine(username + " 登入"); fiberRw.UserToken = new UserInfo() { UserName = username, }; UserList.Add(fiberRw); 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: //GET USERLIST { if (fiberRw.UserToken != null) { var x = from p in UserList where p != fiberRw select p.UserToken.UserName; fiberRw.Write(2001); fiberRw.Write(x.ToList()); await fiberRw.Flush(); foreach (var item in UserList.Where(p => p != fiberRw)) { await await item.Sync.Ask(() => { item.Write(2002); item.Write(fiberRw.UserToken.UserName); return(item.Flush()); }); } } } break; case 3000: { if (fiberRw.UserToken != null) { string targetuser = await fiberRw.ReadString(); string msg = await fiberRw.ReadString(); if (targetuser.Equals("ALL", StringComparison.OrdinalIgnoreCase)) { foreach (var item in UserList.AsReadOnly()) { if (item != fiberRw) { await await item.Sync.Ask(() => { item.Write(3001); item.Write(fiberRw.UserToken.UserName); item.Write(msg); return(item.Flush()); }); } } } else { var user = UserList.FirstOrDefault(p => p.UserToken.UserName == targetuser); if (user != null) { await await user.Sync.Ask(() => { user.Write(3002); user.Write(fiberRw.UserToken.UserName); user.Write(msg); return(user.Flush()); }); } } } } break; } }
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); }