Exemple #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()));
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
            }
        }
Exemple #5
0
        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);
            }
        }
Exemple #6
0
 public async Task <int> TestRec(IASync async, int count)
 {
     count--;
     if (count > 1)
     {
         count = (await async.Get <IPacker>().TestRecAsync(count)).As <int>();
     }
     return(count);
 }
Exemple #7
0
 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);
 }
Exemple #8
0
        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);
            }
        }
Exemple #9
0
        public Task <bool> MkDir(IASync async, string path)
        {
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
                return(Task.FromResult((true)));
            }

            return(Task.FromResult((false)));
        }
Exemple #10
0
        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);
        }
Exemple #11
0
        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);
        }
Exemple #12
0
 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);
     }
 }
Exemple #13
0
        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);
                }
            }
        }
Exemple #14
0
        public bool LogOn(IASync token)
        {
            UserInfo user = new UserInfo()
            {
                Async = token.GetAsyncToken()
            };

            token.UserToken       = user;
            token.UserDisconnect += Token_UserDisconnect;

            return(true);
        }
Exemple #15
0
        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();
                }
            }
        }
Exemple #16
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);
        }
Exemple #17
0
        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);
        }
Exemple #18
0
        /// <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);
                    }
                }
            }
        }
Exemple #19
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));
        }
Exemple #20
0
        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));
        }
Exemple #21
0
        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));
        }
Exemple #22
0
        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);
        }
Exemple #23
0
        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);
        }
Exemple #24
0
        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);
        }
Exemple #25
0
        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));
        }
Exemple #26
0
        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);
        }
Exemple #27
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());
        }
Exemple #28
0
        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);
        }
Exemple #29
0
 public int Add(IASync async, int count)
 {
     return(count + 1);
 }