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); } }
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); } }