void Traverse(string directory, DirectoryTraverserResult result)
        {
            try
            {
                var dirInfo = new DirectoryInfo(directory);
                result.Directories++;
                OnDirectory?.Invoke(dirInfo);

                if (OnFile != null)
                {
                    foreach (var file in dirInfo.EnumerateFiles())
                    {
                        OnFile.Invoke(file);
                    }
                }

                foreach (var dir in dirInfo.EnumerateDirectories())
                {
                    Traverse(Path.Combine(directory, dir.Name), result);
                }
            }
            catch
            {
                result.Exceptions++;
            }
        }
Exemple #2
0
        private void _client_OnMessage(object sender, byte[] data)
        {
            ((UserToken)_client.ReceiveSocket.UserToken).UnPackage(data, (p) =>
            {
                try
                {
                    var msg    = SerializeHelper.ProtolBufDeserialize <Message>(p.Content);
                    ActiveTime = DateTime.Now;
                    switch (msg.Protocal)
                    {
                    case (byte)MessageProtocalEnum.RLogin:
                        this.OnLogined?.Invoke(this, Encoding.UTF8.GetString(msg.Data));
                        break;

                    case (byte)MessageProtocalEnum.RSubscribe:
                        this.OnSubed(Encoding.UTF8.GetString(msg.Data));
                        break;

                    case (byte)MessageProtocalEnum.File:
                        OnFile?.Invoke(this, msg);
                        break;

                    case (byte)MessageProtocalEnum.Heart:
                        ActiveTime = DateTime.Now;
                        break;

                    default:
                        OnMessage?.Invoke(this, msg);
                        break;
                    }
                }
                catch
                {
                }
            });
        }
        public void WsInite()
        {
            ws.OnMessage += (sender, e) =>
            {
                if (e.Data != null)
                {
                    try
                    {
                        Message msg = SerializeHelper.Deserialize <Message>(e.Data);
                        if (msg != null)
                        {
                            switch (msg.Protocal)
                            {
                            case (byte)MessageProtocalEnum.Heart:
                                ActiveTime = DateTime.Now;
                                //OnNotice?.Invoke(new Message
                                //{
                                //    Data = Encoding.UTF8.GetBytes("心跳:"+ DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"))
                                //});
                                break;

                            case (byte)MessageProtocalEnum.RLogin:
                                this.OnLogined?.Invoke(this, Encoding.UTF8.GetString(msg.Data));
                                isLogin = true;
                                OnNotice?.Invoke(msg);
                                break;

                            case (byte)MessageProtocalEnum.RemoteConnect:
                                //var aa = Encoding.UTF8.GetString(msg.Data);
                                OnNotice?.Invoke(msg);
                                break;

                            default:
                                OnMessage?.Invoke(this, msg);
                                break;
                            }
                        }
                    }
                    catch
                    {
                    }
                }
                else
                {
                    Message msgFile = SerializeHelper.ProtolBufDeserialize <Message>(e.RawData);
                    if (msgFile.Protocal == (byte)MessageProtocalEnum.File)
                    {
                        OnFile?.Invoke(this, msgFile.Data, "1");
                    }
                    if (msgFile.Protocal == (byte)MessageProtocalEnum.FileSlice)
                    {
                        OnFile?.Invoke(this, msgFile.Data, "2");
                    }
                    OnNotice?.Invoke(new Message {
                        Data = Encoding.UTF8.GetBytes("接收到图片")
                    });
                }
            };

            ws.OnError += (sender, e) =>
            {
            };
            ws.OnClose += (sender, e) =>
            {
            };
            // ws.OnOpen += (sender, e) => ws.Send("name:Hi, there!");
        }