// Path: src/main/java/org/cleverframe/fastdfs/protocol/BaseResponse.java
// public abstract class BaseResponse<T> {
//     /**
//      * 报文头
//      */
//     private ProtocolHead head;
// 
//     /**
//      * 返回值泛型类型
//      */
//     private final Class<T> genericType;
// 
//     /**
//      * 构造函数
//      */
//     public BaseResponse() {
//         this.genericType = ReflectionsUtils.getClassGenricType(getClass());
//     }
// 
//     /**
//      * 获取报文长度
//      */
//     protected long getContentLength() {
//         return head.getContentLength();
//     }
// 
//     /**
//      * 解析反馈结果 请求头报文使用 {@link ProtocolHead#createFromInputStream(InputStream)} 解析
//      */
//     T decode(ProtocolHead head, InputStream in, Charset charset) throws IOException {
//         this.head = head;
//         return decodeContent(in, charset);
//     }
// 
//     /**
//      * 解析反馈内容
//      */
//     public T decodeContent(InputStream in, Charset charset) throws IOException {
//         // 如果有内容
//         if (getContentLength() > 0) {
//             byte[] bytes = new byte[(int) getContentLength()];
//             int contentSize = in.read(bytes);
//             // 获取数据
//             if (contentSize != getContentLength()) {
//                 throw new IOException("读取到的数据长度与协议长度不符");
//             }
//             return FastDfsParamMapperUtils.map(bytes, genericType, charset);
//         }
//         return null;
//     }
// }
// 
// Path: src/main/java/org/cleverframe/fastdfs/protocol/storage/request/ModifyRequest.java
// public class ModifyRequest extends BaseRequest {
//     /**
//      * 文件路径长度
//      */
//     @FastDFSColumn(index = 0)
//     private long pathSize;
// 
//     /**
//      * 开始位置
//      */
//     @FastDFSColumn(index = 1)
//     private long fileOffset;
// 
//     /**
//      * 发送文件长度
//      */
//     @FastDFSColumn(index = 2)
//     private long fileSize;
// 
//     /**
//      * 文件路径
//      */
//     @FastDFSColumn(index = 3, dynamicField = DynamicFieldType.allRestByte)
//     private String path;
// 
//     /**
//      * 构造函数
//      *
//      * @param inputStream 输入流
//      * @param fileSize    文件大小
//      * @param path        文件路径
//      * @param fileOffset  开始位置
//      */
//     public ModifyRequest(InputStream inputStream, long fileSize, String path, long fileOffset) {
//         super();
//         this.inputFile = inputStream;
//         this.fileSize = fileSize;
//         this.path = path;
//         this.fileOffset = fileOffset;
//         head = new ProtocolHead(CmdConstants.STORAGE_PROTO_CMD_MODIFY_FILE);
// 
//     }
// 
//     /**
//      * 打包参数
//      */
//     @Override
//     public byte[] encodeParam(Charset charset) {
//         // 运行时参数在此计算值
//         this.pathSize = path.getBytes(charset).length;
//         return super.encodeParam(charset);
//     }
// 
//     public long getPathSize() {
//         return pathSize;
//     }
// 
//     public long getFileOffset() {
//         return fileOffset;
//     }
// 
//     public String getPath() {
//         return path;
//     }
// 
//     @Override
//     public long getFileSize() {
//         return fileSize;
//     }
// }


import org.cleverframe.fastdfs.protocol.BaseResponse;
import org.cleverframe.fastdfs.protocol.storage.request.ModifyRequest;
import java.io.InputStream;
package org.cleverframe.fastdfs.protocol.storage;



/**
 * 文件修改命令
 * 作者：LiZW <br/>
 * 创建时间：2016/11/20 18:26 <br/>
 */
public class ModifyCommand extends StorageCommand<Void> {

    /**
     * 文件修改命令
     *
     * @param path        文件路径
     * @param inputStream 输入流
     * @param fileSize    文件大小
     * @param fileOffset  开始位置
     */
    public ModifyCommand(String path, InputStream inputStream, long fileSize, long fileOffset) {
        super();
        this.request = new ModifyRequest(inputStream, fileSize, path, fileOffset);
        // 输出响应
// Path: src/main/java/org/cleverframe/fastdfs/protocol/BaseResponse.java
// public abstract class BaseResponse<T> {
//     /**
//      * 报文头
//      */
//     private ProtocolHead head;
// 
//     /**
//      * 返回值泛型类型
//      */
//     private final Class<T> genericType;
// 
//     /**
//      * 构造函数
//      */
//     public BaseResponse() {
//         this.genericType = ReflectionsUtils.getClassGenricType(getClass());
//     }
// 
//     /**
//      * 获取报文长度
//      */
//     protected long getContentLength() {
//         return head.getContentLength();
//     }
// 
//     /**
//      * 解析反馈结果 请求头报文使用 {@link ProtocolHead#createFromInputStream(InputStream)} 解析
//      */
//     T decode(ProtocolHead head, InputStream in, Charset charset) throws IOException {
//         this.head = head;
//         return decodeContent(in, charset);
//     }
// 
//     /**
//      * 解析反馈内容
//      */
//     public T decodeContent(InputStream in, Charset charset) throws IOException {
//         // 如果有内容
//         if (getContentLength() > 0) {
//             byte[] bytes = new byte[(int) getContentLength()];
//             int contentSize = in.read(bytes);
//             // 获取数据
//             if (contentSize != getContentLength()) {
//                 throw new IOException("读取到的数据长度与协议长度不符");
//             }
//             return FastDfsParamMapperUtils.map(bytes, genericType, charset);
//         }
//         return null;
//     }
// }
// 
// Path: src/main/java/org/cleverframe/fastdfs/protocol/storage/request/ModifyRequest.java
// public class ModifyRequest extends BaseRequest {
//     /**
//      * 文件路径长度
//      */
//     @FastDFSColumn(index = 0)
//     private long pathSize;
// 
//     /**
//      * 开始位置
//      */
//     @FastDFSColumn(index = 1)
//     private long fileOffset;
// 
//     /**
//      * 发送文件长度
//      */
//     @FastDFSColumn(index = 2)
//     private long fileSize;
// 
//     /**
//      * 文件路径
//      */
//     @FastDFSColumn(index = 3, dynamicField = DynamicFieldType.allRestByte)
//     private String path;
// 
//     /**
//      * 构造函数
//      *
//      * @param inputStream 输入流
//      * @param fileSize    文件大小
//      * @param path        文件路径
//      * @param fileOffset  开始位置
//      */
//     public ModifyRequest(InputStream inputStream, long fileSize, String path, long fileOffset) {
//         super();
//         this.inputFile = inputStream;
//         this.fileSize = fileSize;
//         this.path = path;
//         this.fileOffset = fileOffset;
//         head = new ProtocolHead(CmdConstants.STORAGE_PROTO_CMD_MODIFY_FILE);
// 
//     }
// 
//     /**
//      * 打包参数
//      */
//     @Override
//     public byte[] encodeParam(Charset charset) {
//         // 运行时参数在此计算值
//         this.pathSize = path.getBytes(charset).length;
//         return super.encodeParam(charset);
//     }
// 
//     public long getPathSize() {
//         return pathSize;
//     }
// 
//     public long getFileOffset() {
//         return fileOffset;
//     }
// 
//     public String getPath() {
//         return path;
//     }
// 
//     @Override
//     public long getFileSize() {
//         return fileSize;
//     }
// }


// Path: src/main/java/org/cleverframe/fastdfs/protocol/storage/ModifyCommand.java
import org.cleverframe.fastdfs.protocol.BaseResponse;
import org.cleverframe.fastdfs.protocol.storage.request.ModifyRequest;
import java.io.InputStream;

package org.cleverframe.fastdfs.protocol.storage;



/**
 * 文件修改命令
 * 作者：LiZW <br/>
 * 创建时间：2016/11/20 18:26 <br/>
 */
public class ModifyCommand extends StorageCommand<Void> {

    /**
     * 文件修改命令
     *
     * @param path        文件路径
     * @param inputStream 输入流
     * @param fileSize    文件大小
     * @param fileOffset  开始位置
     */
    public ModifyCommand(String path, InputStream inputStream, long fileSize, long fileOffset) {
        super();
        this.request = new ModifyRequest(inputStream, fileSize, path, fileOffset);
        // 输出响应
        this.response = new BaseResponse<Void>() {