public Task <Result> GetFile(IASync async, string path) { if (async.UserToken != null) { var user = async.Token <UserInfo>(); if (!File.Exists(path)) { throw new FileNotFoundException($"not Find file{path}"); } var stream = File.Open(path, FileMode.Open, FileAccess.Read); var key = ++user.Key; if (user.FileGetDictionary.TryAdd(key, stream)) { Console.WriteLine($"Get File {path}"); return(Task.FromResult <Result>(async.Res(key, stream.Length))); } else { stream.Dispose(); return(Task.FromResult <Result>(async.Res())); } } return(Task.FromResult <Result>(async.Res())); }
public Task <int> CreateFile(IASync async, string path) { if (async.UserToken != null) { var user = async.Token <UserInfo>(); var stream = File.Open(path, FileMode.Create, FileAccess.Write); var key = ++user.Key; if (user.FilePushDictionary.TryAdd(key, stream)) { Console.WriteLine($"UP File {path}"); return(Task.FromResult(key)); } else { stream.Dispose(); return(null); } } else { return(null); } }
public async Task <bool> WriteFile(IASync async, int fileID, byte[] data, int count, long offset, uint crc) { if (async.UserToken != null) { var user = async.Token <UserInfo>(); if (CRC32.GetCRC32(data) != crc) { return(false); } if (user.FilePushDictionary.ContainsKey(fileID)) { var Stream = user.FilePushDictionary[fileID]; Stream.Position = offset; await Stream.WriteAsync(data, 0, count); return(true); } return(false); } return(false); }
public async Task <bool> MessageShow2(IASync async, string msg) { var clientserv = async.Get <IClientServ>(); var p = await clientserv.ShowMsg(msg); //你可以从 p.IsError 来判断是否发生了错误,比如读取超时,或者客户端断线之类的 //至于超时读取设置你可以在build的时候设置timeout时间 //你可以从 p.ErrorMsg,打印错误内容 //你也可以从 p.ErrorId判断错误信息 //你还能从 p.IsHaveValue 来判断是否有返回值 if (p.As <bool>()) //从Result对象中读取一个bool结果,如果有多个返回值你可以As<bool>(0),As<bool>(1),As<bool>(2) { Console.WriteLine(msg); Log.Debug($"客户端打印了我就打印 {msg}"); clientserv.Good("表扬一下");//表扬客户端一下 return(true); } else { Log.Debug($"客户端打印失败所以我就不打印了"); return(false); } }
public async Task <bool> IsLogOn(IASync async, string username) { if (UserList.Find(p => p.UserName == username) == null) { UserInfo user = new UserInfo() { UserName = username, token = async.GetAsyncToken() }; async.UserToken = user; async.IsValidate = true; user.Nick = (await async.Get <ClientMethods>().GetNick()).As <string>(); async.Get <ClientMethods>().SetUserList(UserList); foreach (var item in UserList) { item.token.Get <ClientMethods>().AddUser(user); } async.UserDisconnect += AsyncUser_UserDisconnect; UserList.Add(user); return(true); } else { return(false); } }
public async Task <int> TestRec(IASync async, int count) { count--; if (count > 1) { count = (await async.Get <IPacker>().TestRecAsync(count)).As <int>(); } return(count); }
public async Task <int> Number(IASync async, int num) //一样传入IASync对象,放在第一位,重要的事情要说3遍 { num--; if (num > 1) { num = (await async.Get <IService>().NumberRec(num)).As <int>(); } return(num); }
public void SetPassWord(IASync async, string password) { UserInfo user = async.UserToken as UserInfo; if (user != null) { user.PassWord = password; Console.WriteLine(user.UserName + " Set PassWord:" + password); } }
public Task <bool> MkDir(IASync async, string path) { if (!Directory.Exists(path)) { Directory.CreateDirectory(path); return(Task.FromResult((true))); } return(Task.FromResult((false))); }
public async Task <string> StartDown(IASync async, string url) { var htmldata = (await async.GetForEmit <IClientPack>().DownHtmlAsync(url))?[0]?.Value <byte[]>(); if (htmldata != null) { return(Encoding.UTF8.GetString(htmldata)); } return(null);// or async.RET(null); }
public bool ShowMsg(IASync async, string msg) { if (Log == null) { Log = new DefaultLog(async.LoggerFactory.CreateLogger(nameof(ClientConroller))); } Log.Debug(msg); Console.WriteLine(msg); return(true); }
public async Task <int> NumberRec(IASync async, int num) { num--; if (num > 1) { return((await async.Get <IClientServ>().NumberRec(num)).As <int>()); //调用客户端的递归方法 } else { return(num); } }
public void SendMessage(IASync async, string msg) { var userinfo = async.UserToken as UserInfo; if (userinfo != null && async.IsValidate) { foreach (var item in UserList) { item.token.Get <ClientMethods>().MessageTo(userinfo.Nick, msg); } } }
public bool LogOn(IASync token) { UserInfo user = new UserInfo() { Async = token.GetAsyncToken() }; token.UserToken = user; token.UserDisconnect += Token_UserDisconnect; return(true); }
public void FileClose(IASync token, int fileID) { if (token.UserToken != null) { var user = token.Token <UserInfo>(); if (user.FilePushDictionary.ContainsKey(fileID)) { user.FilePushDictionary.TryRemove(fileID, out FileStream cc); cc.Dispose(); } } }
public async Task <Result> StartDown(IASync async, string url) { var htmldata = (await async.Get <IClientPack>().DownHtmlAsync(url))?[0]?.Value <byte[]>(); if (htmldata != null) { string html = Encoding.UTF8.GetString(htmldata); return(async.Res(html)); } return(async.Res());// or async.RET(null); }
public async Task <int> TestRec2(IASync async, int count) { count--; if (count > 1) { var x = (await async.Func(2501, count))?[0]?.Value <int>(); if (x != null && x.HasValue) { count = x.Value; } } return(count); }
/// <summary> /// USER DISCONNECT /// </summary> /// <param name="arg1"></param> /// <param name="arg2"></param> private void Token_UserDisconnect(IASync arg1, string arg2) { if (arg1.UserToken != null) { UserInfo user = arg1.UserToken as UserInfo; if (user != null) { lock (UserList) { UserList.Remove(user); } } } }
public async Task <Result> TestRec(IASync async, int count) { count--; if (count > 1) { var x = (await async.Get <IClientPack>().TestRecAsync(count))?[0]?.Value <int>(); if (x != null && x.HasValue) { count = x.Value; } } return(async.Res(count)); }
public Task <bool> Rm(IASync async, string file) { if (File.Exists(file)) { File.Delete(file); return(Task.FromResult(true)); } else if (Directory.Exists(file)) { Directory.Delete(file, true); return(Task.FromResult(true)); } return(Task.FromResult(false)); }
public Task <bool> MvFile(IASync async, string source, string target) { if (File.Exists(source)) { File.Move(source, target); return(Task.FromResult(true)); } else if (Directory.Exists(source)) { Directory.Move(source, target); return(Task.FromResult(true)); } return(Task.FromResult(false)); }
public async Task <int> TestRec(IASync async, int count) { count--; if (count > 1) { var pk = await async.GetForEmit <IClientPack>().TestRecAsync(count); if (pk.IsError) { return(0); } count = pk.As <int>(); } return(count); }
public async Task <int> TestRec2(IASync async, int count) { count--; if (count > 1) { var tmp = await async.GetForEmit <IClientPack>().TestRecAsync2(count); if (tmp.IsError) { return(0); } count = tmp.As <int>(); } return(count); }
public bool CreateDirectory(IASync async, string path) { if (async.UserToken is UserInfo user) { if (Directory.Exists(path)) { return(true); } else { Directory.CreateDirectory(path); return(true); } } return(false); }
public Task <bool> Copy(IASync async, string source, string target) { if (File.Exists(source)) { File.Copy(source, target, true); return(Task.FromResult(true)); } else if (Directory.Exists(source)) { return(Task.Run(() => { CopyDirectory(async as AsyncCalls, new DirectoryInfo(source), new DirectoryInfo(target)); return Task.FromResult(true); })); } return(Task.FromResult(false)); }
public bool IsLogOn(IASync async, string username, string password) { UserInfo tmp = new UserInfo() { UserName = username, PassWord = password, Token = async.GetAsyncToken() }; tmp.Token.UserToken = tmp; tmp.Token.UserDisconnect += Token_UserDisconnect; lock (UserList) { UserList.Add(tmp); } return(true); }
public async Task <Result> GetFileData(IASync async, int fileId, long postion) { if (async.UserToken is UserInfo user) { if (user.FileGetDictionary.ContainsKey(fileId)) { var stream = user.FileGetDictionary[fileId]; stream.Position = postion; byte[] data = new byte[4096]; int count = await stream.ReadAsync(data, 0, data.Length); return(async.Res(data, count, CRC32.GetCRC32(data))); } } return(async.Res()); }
public async Task <string> ToMessage(IASync async, string account, string msg) { var userinfo = async.Token <UserInfo>(); if (userinfo != null && async.IsValidate) { var touser = UserList.Find(p => p.UserName == account); if (touser != null) { var cx = touser.token.MakeAsync(async as AsyncCalls).Get <ClientMethods>(); var ret = (await cx.MsgToUser(userinfo.Nick, msg)).As <string>(); if (ret != null) { return(ret); } } } return(null); }
public int Add(IASync async, int count) { return(count + 1); }