public override void ProcessRequest()
        {
            CopyContentsReq req = mSocketTalker.ReceiveObject <CopyContentsReq>();
            CopyContentsRes res = new CopyContentsRes();
            Content         containerContent = new Content(req.Container);

            try
            {
                switch (containerContent.Type)
                {
                case Content.TYPE_NOT_FOUND:
                    throw new KnownException("找不到路径 " + containerContent.Path + " 所代表的容器。");

                case Content.TYPE_FILE:
                    throw new KnownException("路径 " + containerContent.Path + " 代表的是一个文件,不能作为容器。");
                }
                res.CopyResults = new string[req.ContentPaths.Count];
                for (int i = 0; i < req.ContentPaths.Count; i++)
                {
                    Content content = new Content(req.ContentPaths[i]);
                    try
                    {
                        switch (content.Type)
                        {
                        case Content.TYPE_NOT_FOUND:
                            throw new KnownException("找不到此路径所代表的内容。");

                        case Content.TYPE_DRIVER:
                            throw new KnownException("此路径所代表的是一个驱动器,不能被移动。");

                        case Content.TYPE_FILE:
                            CopyFile(content, containerContent);
                            break;

                        case Content.TYPE_DIRECTORY:
                            CopyDirectory(content, containerContent);
                            break;
                        }
                    }
                    catch (Exception e)
                    {
                        res.CopyResults[i] = content.Path + " " + e.Message;
                    }
                }

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

                mSocketTalker.SendInt(ProtocolTypes.TYPE_COPY_CONTENTS);
                mSocketTalker.SendObject(res);
            }
        }
Beispiel #2
0
 private void mPasteMenuItem_Click(object sender, EventArgs e)
 {
     if (mPasteType == "Cut")
     {
         MoveContentsReq req = new MoveContentsReq();
         req.ContentPaths = mPasteSources;
         req.Container    = mCurrentDirectory;
         mClient.SendRequest(ProtocolTypes.TYPE_MOVE_CONTENTS, req);
     }
     if (mPasteType == "Copy")
     {
         CopyContentsReq req = new CopyContentsReq();
         req.ContentPaths = mPasteSources;
         req.Container    = mCurrentDirectory;
         mClient.SendRequest(ProtocolTypes.TYPE_COPY_CONTENTS, req);
     }
 }