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 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 <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 <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)); }