예제 #1
0
        private void SendListContentsReq()
        {
            mCurrentDirectoryEditor.Text = mCurrentDirectory;
            ListContentsReq req = new ListContentsReq();

            req.DriverOrDirectoryPath = mCurrentDirectory;
            mClient.SendRequest(ProtocolTypes.TYPE_LIST_CONTENTS, req);
        }
        public override void ProcessRequest()
        {
            ListContentsReq req = mSocketTalker.ReceiveObject <ListContentsReq>();
            ListContentsRes res = new ListContentsRes();

            try
            {
                if (String.IsNullOrEmpty(req.DriverOrDirectoryPath))
                {
                    res.Drivers = Directory.GetLogicalDrives();
                }
                else
                {
                    Content content = new Content(req.DriverOrDirectoryPath);
                    switch (content.Type)
                    {
                    case Content.TYPE_NOT_FOUND:
                        throw new KnownException("无法找到文件或目录 " + content.Path + " 。");

                    case Content.TYPE_DRIVER:
                        res.Directories = Directory.GetDirectories(content.Path);
                        res.Files       = Directory.GetFiles(content.Path);
                        break;

                    case Content.TYPE_FILE:
                        throw new KnownException("路径 " + content.Path + " 是一个文件,无法列出内容。");

                    case Content.TYPE_DIRECTORY:
                        res.Directories = Directory.GetDirectories(content.Path);
                        res.Files       = Directory.GetFiles(content.Path);
                        break;
                    }
                }

                mSocketTalker.SendInt(ProtocolTypes.TYPE_LIST_CONTENTS);
                mSocketTalker.SendObject(res);
            }
            catch (Exception e)
            {
                res.ErorrOccured = true;
                res.ErrorMessage = e.Message;

                mSocketTalker.SendInt(ProtocolTypes.TYPE_LIST_CONTENTS);
                mSocketTalker.SendObject(res);
            }
        }