예제 #1
0
        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()));
        }
예제 #2
0
        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);
        }
예제 #3
0
        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());
        }
예제 #4
0
        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));
        }