com.github.tobato.fastdfs.service.DefaultGenerateStorageClient Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of fastdfs-client Show documentation
Show all versions of fastdfs-client Show documentation
基于yuqih发布的代码与fastdfs-client 官方1.26版本的重构
package com.github.tobato.fastdfs.service;
import java.io.InputStream;
import java.util.Set;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import com.github.tobato.fastdfs.conn.ConnectionManager;
import com.github.tobato.fastdfs.domain.FileInfo;
import com.github.tobato.fastdfs.domain.MataData;
import com.github.tobato.fastdfs.domain.StorageNode;
import com.github.tobato.fastdfs.domain.StorageNodeInfo;
import com.github.tobato.fastdfs.domain.StorePath;
import com.github.tobato.fastdfs.proto.storage.DownloadCallback;
import com.github.tobato.fastdfs.proto.storage.StorageDeleteFileCommand;
import com.github.tobato.fastdfs.proto.storage.StorageDownloadCommand;
import com.github.tobato.fastdfs.proto.storage.StorageGetMetadataCommand;
import com.github.tobato.fastdfs.proto.storage.StorageQueryFileInfoCommand;
import com.github.tobato.fastdfs.proto.storage.StorageSetMetadataCommand;
import com.github.tobato.fastdfs.proto.storage.StorageUploadFileCommand;
import com.github.tobato.fastdfs.proto.storage.StorageUploadSlaveFileCommand;
import com.github.tobato.fastdfs.proto.storage.enums.StorageMetdataSetType;
/**
* 基本存储客户端操作实现
*
* @author tobato
*
*/
@Component
public class DefaultGenerateStorageClient implements GenerateStorageClient {
/** trackerClient */
@Resource
protected TrackerClient trackerClient;
/** connectManager */
@Resource
protected ConnectionManager connectionManager;
/** 日志 */
protected static Logger LOGGER = LoggerFactory.getLogger(DefaultGenerateStorageClient.class);
/**
* 上传不支持断点续传的文件
*/
@Override
public StorePath uploadFile(String groupName, InputStream inputStream, long fileSize, String fileExtName) {
StorageNode client = trackerClient.getStoreStorage(groupName);
StorageUploadFileCommand command = new StorageUploadFileCommand(client.getStoreIndex(), inputStream,
fileExtName, fileSize, false);
return connectionManager.executeFdfsCmd(client.getInetSocketAddress(), command);
}
/**
* 上传从文件
*/
@Override
public StorePath uploadSlaveFile(String groupName, String masterFilename, InputStream inputStream, long fileSize,
String prefixName, String fileExtName) {
StorageNodeInfo client = trackerClient.getUpdateStorage(groupName, masterFilename);
StorageUploadSlaveFileCommand command = new StorageUploadSlaveFileCommand(inputStream, fileSize, masterFilename,
prefixName, fileExtName);
return connectionManager.executeFdfsCmd(client.getInetSocketAddress(), command);
}
/**
* 获取metadata
*/
@Override
public Set getMetadata(String groupName, String path) {
StorageNodeInfo client = trackerClient.getFetchStorage(groupName, path);
StorageGetMetadataCommand command = new StorageGetMetadataCommand(groupName, path);
return connectionManager.executeFdfsCmd(client.getInetSocketAddress(), command);
}
/**
* 覆盖metadata
*/
@Override
public void overwriteMetadata(String groupName, String path, Set metaDataSet) {
StorageNodeInfo client = trackerClient.getUpdateStorage(groupName, path);
StorageSetMetadataCommand command = new StorageSetMetadataCommand(groupName, path, metaDataSet,
StorageMetdataSetType.STORAGE_SET_METADATA_FLAG_OVERWRITE);
connectionManager.executeFdfsCmd(client.getInetSocketAddress(), command);
}
/**
* 合并metadata
*/
@Override
public void mergeMetadata(String groupName, String path, Set metaDataSet) {
StorageNodeInfo client = trackerClient.getUpdateStorage(groupName, path);
StorageSetMetadataCommand command = new StorageSetMetadataCommand(groupName, path, metaDataSet,
StorageMetdataSetType.STORAGE_SET_METADATA_FLAG_MERGE);
connectionManager.executeFdfsCmd(client.getInetSocketAddress(), command);
}
/**
* 查询文件信息
*/
@Override
public FileInfo queryFileInfo(String groupName, String path) {
StorageNodeInfo client = trackerClient.getFetchStorage(groupName, path);
StorageQueryFileInfoCommand command = new StorageQueryFileInfoCommand(groupName, path);
return connectionManager.executeFdfsCmd(client.getInetSocketAddress(), command);
}
/**
* 删除文件
*/
@Override
public void deleteFile(String groupName, String path) {
StorageNodeInfo client = trackerClient.getUpdateStorage(groupName, path);
StorageDeleteFileCommand command = new StorageDeleteFileCommand(groupName, path);
connectionManager.executeFdfsCmd(client.getInetSocketAddress(), command);
}
/**
* 下载整个文件
*/
@Override
public T downloadFile(String groupName, String path, DownloadCallback callback) {
long fileOffset = 0;
long fileSize = 0;
return downloadFile(groupName, path, fileOffset, fileSize, callback);
}
/**
* 下载文件片段
*/
@Override
public T downloadFile(String groupName, String path, long fileOffset, long fileSize,
DownloadCallback callback) {
StorageNodeInfo client = trackerClient.getFetchStorage(groupName, path);
StorageDownloadCommand command = new StorageDownloadCommand(groupName, path, fileOffset, fileSize, callback);
return connectionManager.executeFdfsCmd(client.getInetSocketAddress(), command);
}
public void setTrackerClientService(TrackerClient trackerClientService) {
this.trackerClient = trackerClientService;
}
public void setConnectionManager(ConnectionManager connectionManager) {
this.connectionManager = connectionManager;
}
}