private Response writeData(Path path, ByteBuf buf, boolean create) throws IOException { try(FSDataOutputStream output = create ? localFS.create(path) : localFS.append(path)) { byte[] bytes = new byte[buf.readableBytes()]; buf.readBytes(bytes); output.write(bytes); } final FileStatus fs = localFS.getFileStatus(path); final WriteDataResponse response = WriteDataResponse.newBuilder().setUpdateTime(fs.getModificationTime()).build(); return reply(DFS.RpcType.WRITE_DATA_RESPONSE, response); }
private Response handle(PhysicalConnection connection, DFS.RenameRequest request) throws IOException { Path oldPath = new Path(request.getOldpath()); Path newPath = new Path(request.getNewpath()); boolean result = localFS.rename(oldPath, newPath); return reply(DFS.RpcType.RENAME_RESPONSE, DFS.RenameResponse.newBuilder().setValue(result).build()); }
private Response handle(PhysicalConnection connection, DFS.DeleteRequest request) throws IOException { Path path = new Path(request.getPath()); Boolean recursive = request.getRecursive(); boolean result = localFS.delete(path, recursive != null ? recursive.booleanValue() : false); return reply(DFS.RpcType.DELETE_RESPONSE, DFS.DeleteResponse.newBuilder().setValue(result).build()); }
private Response handle(PhysicalConnection connection, DFS.GetFileDataRequest request) throws IOException { Path path = new Path(request.getPath()); try(FSDataInputStream fdis = localFS.open(path)) { byte[] buf = new byte[request.getLength()]; fdis.seek(request.getStart()); int read = fdis.read(buf); DFS.GetFileDataResponse response = DFS.GetFileDataResponse.newBuilder().setRead(read).build(); ByteBuf[] bodies = (read != -1) ? new ByteBuf[] { Unpooled.wrappedBuffer(buf, 0, read) } : NO_BUFS; return reply(DFS.RpcType.GET_FILE_DATA_RESPONSE, response, bodies); } }
private Response handle(PhysicalConnection connection, DFS.GetFileStatusRequest request) throws IOException { Path path = new Path(request.getPath()); FileStatus status = localFS.getFileStatus(path); DFS.GetFileStatusResponse response = DFS.GetFileStatusResponse.newBuilder() .setStatus(RemoteNodeFileSystem.toProtoFileStatus(status)) .build(); return reply(DFS.RpcType.GET_FILE_STATUS_RESPONSE, response); }
private Response handle(PhysicalConnection connection, DFS.MkdirsRequest request) throws IOException { Path path = new Path(request.getPath()); FsPermission permission = RemoteNodeFileSystem.toFsPermission(request.getPermission()); boolean result = localFS.mkdirs(path, permission); return reply(DFS.RpcType.MKDIRS_RESPONSE, DFS.MkdirsResponse.newBuilder().setValue(result).build()); }
return reply(DFS.RpcType.LIST_STATUS_RESPONSE, response.build());