All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jeesuite.filesystem.sdk.fdfs.StorageClient Maven / Gradle / Ivy

There is a newer version: 1.3.6
Show newest version
/**
 *
 */
package com.jeesuite.filesystem.sdk.fdfs;

import com.jeesuite.filesystem.sdk.fdfs.codec.*;
import com.jeesuite.filesystem.sdk.fdfs.exchange.Replier;
import com.jeesuite.filesystem.sdk.fdfs.exchange.StreamReplier;

import java.io.File;
import java.util.concurrent.CompletableFuture;


final class StorageClient {

    private final FastdfsExecutor executor;

    StorageClient(FastdfsExecutor executor) {
        this.executor = executor;
    }

    /**
     * 上传文件
     *
     * @param server 存储服务器信息,应该由 tracker 查询得到
     * @param file   文件
     * @return
     */
    CompletableFuture upload(StorageServer server, File file) {
        return executor.execute(
                server.toInetAddress(),
                new FileUploadEncoder(file, server.pathIdx()),
                FileIdDecoder.INSTANCE
        );
    }

    /**
     * 上传文件,其中文件内容字段 content 的支持以下类型:
     * 

*

    *
  • {@link java.io.File}
  • *
  • {@link java.io.InputStream}
  • *
  • byte[]
  • *
  • {@link java.nio.channels.ReadableByteChannel}
  • *
* * @param server 存储服务器信息,应该由 tracker 查询得到 * @param content 上传内容 * @param filename 扩展名 * @param size 内容长度 */ CompletableFuture upload(StorageServer server, Object content, String filename, long size) { return executor.execute( server.toInetAddress(), new FileUploadEncoder(content, filename, size, server.pathIdx()), FileIdDecoder.INSTANCE ); } /** * 上传可追加文件内容 * * @param server 存储服务器信息,应该由 tracker 查询得到 * @param file 文件 */ CompletableFuture uploadAppender(StorageServer server, File file) { return executor.execute( server.toInetAddress(), new FileUploadAppenderEncoder(file, server.pathIdx()), FileIdDecoder.INSTANCE ); } /** * 上传可追加文件内容,其中文件内容字段 content 的支持以下类型: *

*

    *
  • {@link java.io.File}
  • *
  • {@link java.io.InputStream}
  • *
  • byte[]
  • *
  • {@link java.nio.channels.ReadableByteChannel}
  • *
* * @param server 存储服务器信息,应该由 tracker 查询得到 * @param content 上传内容 * @param size 内容长度 * @param filename 扩展名 */ CompletableFuture uploadAppender(StorageServer server, Object content, String filename, long size) { return executor.execute( server.toInetAddress(), new FileUploadAppenderEncoder(content, filename, size, server.pathIdx()), FileIdDecoder.INSTANCE ); } /** * @param server * @param fileId * @param file * @return */ CompletableFuture append(StorageServer server, FileId fileId, File file) { return executor.execute( server.toInetAddress(), new FileAppendEncoder(fileId, file), Replier.NOPDecoder.INSTANCE ); } /** * 追加文件内容 * * @param server 存储服务器信息,应该由 tracker 查询得到 * @param fileId 服务器存储路径 * @param bytes 内容字节数组 * @return */ CompletableFuture append(StorageServer server, FileId fileId, byte[] bytes) { return executor.execute( server.toInetAddress(), new FileAppendEncoder(fileId, bytes, bytes.length), Replier.NOPDecoder.INSTANCE ); } /** * @param server * @param fileId * @param content * @param size * @return */ CompletableFuture append(StorageServer server, FileId fileId, Object content, long size) { return executor.execute( server.toInetAddress(), new FileAppendEncoder(fileId, content, size), Replier.NOPDecoder.INSTANCE ); } /** * @param server * @param fileId * @param file * @param offset * @return */ CompletableFuture modify(StorageServer server, FileId fileId, File file, long offset) { return executor.execute( server.toInetAddress(), new FileModifyEncoder(fileId, file, offset), Replier.NOPDecoder.INSTANCE ); } /** * 修改文件内容 * * @param server 存储服务器信息,应该由 tracker 查询得到 * @param fileId 服务器存储路径 * @param offset 偏移量 * @param bytes 内容字节数组 * @return */ CompletableFuture modify(StorageServer server, FileId fileId, byte[] bytes, long offset) { return executor.execute( server.toInetAddress(), new FileModifyEncoder(fileId, bytes, bytes.length, offset), Replier.NOPDecoder.INSTANCE ); } /** * @param server * @param fileId * @param content * @param size * @param offset * @return */ CompletableFuture modify(StorageServer server, FileId fileId, Object content, long size, long offset) { return executor.execute( server.toInetAddress(), new FileModifyEncoder(fileId, content, size, offset), Replier.NOPDecoder.INSTANCE ); } /** * 删除文件 * * @param server 存储服务器信息,应该由 tracker 查询得到 * @param fileId 服务器存储路径 */ CompletableFuture delete(StorageServer server, FileId fileId) { return executor.execute( server.toInetAddress(), new FileDeleteEncoder(fileId), Replier.NOPDecoder.INSTANCE ); } /** * 截取文件 * * @param server 存储服务器信息,应该由 tracker 查询得到 * @param fileId 服务器存储路径 */ CompletableFuture truncate(StorageServer server, FileId fileId) { return truncate(server, fileId, 0); } /** * 截取文件 * * @param server 存储服务器信息,应该由 tracker 查询得到 * @param fileId 服务器存储路径 * @param truncatedSize 截取文件大小 */ CompletableFuture truncate(StorageServer server, FileId fileId, long truncatedSize) { return executor.execute( server.toInetAddress(), new FileTruncateEncoder(fileId, truncatedSize), Replier.NOPDecoder.INSTANCE ); } /** * 下载文件,其输出 output 参数支持以下类型 *

*

    *
  • {@link java.io.OutputStream}
  • *
  • {@link java.nio.channels.GatheringByteChannel}
  • *
* * @param server 存储服务器信息,应该由 tracker 查询得到 * @param fileId 服务器存储路径 * @param output 输出流 * @return 下载进度 */ CompletableFuture download(StorageServer server, FileId fileId, Object output) { return executor.execute( server.toInetAddress(), new FileDownloadEncoder(fileId), StreamReplier.stream(output) ); } /** * 下载文件内容 * * @param server 存储服务器信息,应该由 tracker 查询得到 * @param fileId 服务器存储路径 * @param offset 字节偏移量 * @param size 下载字节数 * @param output 输出流 * @return 下载进度 */ CompletableFuture download(StorageServer server, FileId fileId, Object output, long offset, long size) { return executor.execute( server.toInetAddress(), new FileDownloadEncoder(fileId, offset, size), StreamReplier.stream(output) ); } /** * 设置文件元数据 * * @param server 存储服务器信息,应该由 tracker 查询得到 * @param fileId 服务器存储路径 * @param metadata 元数据 * @param flag 设置标识 * @return */ CompletableFuture setMetadata(StorageServer server, FileId fileId, FileMetadata metadata, byte flag) { return executor.execute( server.toInetAddress(), new FileMetadataSetEncoder(fileId, metadata, flag), Replier.NOPDecoder.INSTANCE ); } /** * 获取文件元数据 * * @param server 存储服务器信息,应该由 tracker 查询得到 * @param fileId 服务器存储路径 * @return */ CompletableFuture getMetadata(StorageServer server, FileId fileId) { return executor.execute( server.toInetAddress(), new FileMetadataGetEncoder(fileId), FileMetadataDecoder.INSTANCE ); } /** * @param server * @param fileId * @return */ CompletableFuture getInfo(StorageServer server, FileId fileId) { return executor.execute( server.toInetAddress(), new FileInfoGetEncoder(fileId), FileInfoDecoder.INSTANCE ); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy