/** * download file from storage server * * @param group_name the group name of storage server * @param remote_filename filename on storage server * @return file content/buff, return null if fail */ public byte[] download_file(String group_name, String remote_filename) throws IOException, MyException { final long file_offset = 0; final long download_bytes = 0; return this.download_file(group_name, remote_filename, file_offset, download_bytes); }
/** * upload file to storage server (by file name) * * @param local_filename local filename to upload * @param file_ext_name file ext name, do not include dot(.), null to extract ext name from the local filename * @param meta_list meta info array * @return 2 elements string array if success:<br> * <ul><li>results[0]: the group name to store the file </li></ul> * <ul><li>results[1]: the new created filename</li></ul> * return null if fail */ public String[] upload_file(String local_filename, String file_ext_name, NameValuePair[] meta_list) throws IOException, MyException { final String group_name = null; return this.upload_file(group_name, local_filename, file_ext_name, meta_list); }
/** * append file to storage server (by callback) * * @param group_name the group name to append file to * @param appender_filename the appender filename * @param file_size the file size * @param callback the write data callback object * @return 0 for success, != 0 for error (error no) */ public int append_file(String group_name, String appender_filename, long file_size, UploadCallback callback) throws IOException, MyException { return this.do_append_file(group_name, appender_filename, file_size, callback); }
boolean bNewConnection = this.newUpdatableStorageConnection(group_name, remote_filename); Socket storageSocket = this.storageServer.getSocket(); this.send_package(ProtoCommon.STORAGE_PROTO_CMD_DELETE_FILE, group_name, remote_filename); ProtoCommon.RecvPackageInfo pkgInfo = ProtoCommon.recvPackage(storageSocket.getInputStream(), ProtoCommon.STORAGE_PROTO_CMD_RESP, 0);
boolean bNewConnection = this.newReadableStorageConnection(group_name, remote_filename); Socket storageSocket = this.storageServer.getSocket(); ProtoCommon.RecvPackageInfo pkgInfo; this.send_download_package(group_name, remote_filename, file_offset, download_bytes); pkgInfo = ProtoCommon.recvPackage(storageSocket.getInputStream(), ProtoCommon.STORAGE_PROTO_CMD_RESP, -1);
(prefix_name != null)); if (bUploadSlave) { bNewConnection = this.newUpdatableStorageConnection(group_name, master_filename); } else { bNewConnection = this.newWritableStorageConnection(group_name); result = this.set_metadata(new_group_name, remote_filename, meta_list, ProtoCommon.STORAGE_SET_METADATA_FLAG_OVERWRITE); } catch (IOException ex) { if (result != 0) { this.errno = (byte) result; this.delete_file(new_group_name, remote_filename); return null;
StorageClient client = new StorageClient(trackerServer, storageServer); byte[] file_buff; NameValuePair[] meta_list; results = client.upload_appender_file(file_buff, "txt", meta_list); System.out.println("upload_appender_file time used: " + (System.currentTimeMillis() - startTime) + " ms"); System.err.println("upload file fail, error code: " + client.getErrorCode()); return; remote_filename = results[1]; System.err.println("group_name: " + group_name + ", remote_filename: " + remote_filename); System.err.println(client.get_file_info(group_name, remote_filename)); errno=client.set_metadata(group_name, remote_filename, meta_list, ProtoCommon.STORAGE_SET_METADATA_FLAG_MERGE); System.out.println("set_metadata time used: " + (System.currentTimeMillis() - startTime) + " ms"); if (errno == 0) meta_list = client.get_metadata(group_name, remote_filename); if (meta_list != null) file_buff = client.download_file(group_name, remote_filename); System.out.println("download_file time used: " + (System.currentTimeMillis() - startTime) + " ms"); file_ext_name = "txt"; startTime = System.currentTimeMillis(); errno = client.append_file(group_name, appender_filename, file_buff); System.out.println("append_file time used: " + (System.currentTimeMillis() - startTime) + " ms"); if (errno == 0)
StorageClient client = new StorageClient(trackerServer, storageServer); byte[] file_buff; NameValuePair[] meta_list; results = client.upload_file(file_buff, "txt", meta_list); System.out.println("upload_file time used: " + (System.currentTimeMillis() - startTime) + " ms"); System.err.println("upload file fail, error code: " + client.getErrorCode()); return; remote_filename = results[1]; System.err.println("group_name: " + group_name + ", remote_filename: " + remote_filename); System.err.println(client.get_file_info(group_name, remote_filename)); errno=client.set_metadata(group_name, remote_filename, meta_list, ProtoCommon.STORAGE_SET_METADATA_FLAG_MERGE); System.out.println("set_metadata time used: " + (System.currentTimeMillis() - startTime) + " ms"); if (errno == 0) meta_list = client.get_metadata(group_name, remote_filename); if (meta_list != null) file_buff = client.download_file(group_name, remote_filename); System.out.println("download_file time used: " + (System.currentTimeMillis() - startTime) + " ms"); file_ext_name = "txt"; startTime = System.currentTimeMillis(); results = client.upload_file(group_name, master_filename, prefix_name, file_buff, file_ext_name, meta_list); System.out.println("upload_file time used: " + (System.currentTimeMillis() - startTime) + " ms"); if (results != null)
/** * modify appender file to storage server (by callback) * * @param group_name the group name to modify file to * @param appender_filename the appender filename * @param file_offset the offset of appender file * @param modify_size the modify size * @param callback the write data callback object * @return 0 for success, != 0 for error (error no) */ public int modify_file(String group_name, String appender_filename, long file_offset, long modify_size, UploadCallback callback) throws IOException, MyException { return this.do_modify_file(group_name, appender_filename, file_offset, modify_size, callback); }
/** * upload appender file to storage server (by callback) * * @param group_name the group name to upload file to, can be empty * @param file_size the file size * @param callback the write data callback object * @param file_ext_name file ext name, do not include dot(.) * @param meta_list meta info array * @return 2 elements string array if success:<br> * <ul><li>results[0]: the group name to store the file</li></ul> * <ul><li>results[1]: the new created filename</li></ul> * return null if fail */ public String[] upload_appender_file(String group_name, long file_size, UploadCallback callback, String file_ext_name, NameValuePair[] meta_list) throws IOException, MyException { final String master_filename = null; final String prefix_name = null; return this.do_upload_file(ProtoCommon.STORAGE_PROTO_CMD_UPLOAD_APPENDER_FILE, group_name, master_filename, prefix_name, file_ext_name, file_size, callback, meta_list); }
boolean bNewConnection = this.newUpdatableStorageConnection(group_name, remote_filename); Socket storageSocket = this.storageServer.getSocket();
((remote_filename.length() > ProtoCommon.NORMAL_LOGIC_FILENAME_LENGTH) && ((file_size & ProtoCommon.TRUNK_FILE_MARK_SIZE) == 0))) || ((file_size & ProtoCommon.APPENDER_FILE_SIZE) != 0)) { //slave file or appender file FileInfo fi = this.query_file_info(group_name, remote_filename); if (fi == null) { return null;
@Override public boolean remove(String fileName) throws Exception { Guard.ThrowIfArgumentIsNullOrEmpty(fileName, "fileName"); FilePath filePath = new FilePath(fileName); TrackerClient tracker = new TrackerClient(); TrackerServer trackerServer = tracker.getConnection(); StorageServer storageServer = null; String groupName = filePath.getGroupName(); String storageFileName = filePath.getStorageFileName(); StorageClient storageClient = new StorageClient(trackerServer, storageServer); int result = storageClient.delete_file(groupName, storageFileName); if (result == 0) return true; else { log.info(String.format("删除失败:状态码为%s", result)); return false; } }
@Override public byte[] download(String fileName) throws Exception { Guard.ThrowIfArgumentIsNullOrEmpty(fileName, "fileName"); FilePath filePath = new FilePath(fileName); TrackerClient tracker = new TrackerClient(); TrackerServer trackerServer = tracker.getConnection(); StorageServer storageServer = null; StorageClient storageClient = new StorageClient(trackerServer, storageServer); String groupName = filePath.getGroupName(); String storageFileName = filePath.getStorageFileName(); byte[] result = storageClient.download_file(groupName, storageFileName); return result; }
public void deleteFile(String groupName, String remoteFileName) throws Exception { storageClient.delete_file(groupName, remoteFileName); } }
(prefix_name != null)); if (bUploadSlave) { bNewConnection = this.newUpdatableStorageConnection(group_name, master_filename); } else { bNewConnection = this.newWritableStorageConnection(group_name); result = this.set_metadata(new_group_name, remote_filename, meta_list, ProtoCommon.STORAGE_SET_METADATA_FLAG_OVERWRITE); } catch (IOException ex) { if (result != 0) { this.errno = (byte) result; this.delete_file(new_group_name, remote_filename); return null;
long file_offset, long download_bytes, String local_filename) throws IOException, MyException { boolean bNewConnection = this.newReadableStorageConnection(group_name, remote_filename); Socket storageSocket = this.storageServer.getSocket(); try { try { this.errno = 0; this.send_download_package(group_name, remote_filename, file_offset, download_bytes);
boolean bNewConnection = this.newUpdatableStorageConnection(group_name, remote_filename); Socket storageSocket = this.storageServer.getSocket(); ProtoCommon.RecvPackageInfo pkgInfo; this.send_package(ProtoCommon.STORAGE_PROTO_CMD_GET_METADATA, group_name, remote_filename); pkgInfo = ProtoCommon.recvPackage(storageSocket.getInputStream(), ProtoCommon.STORAGE_PROTO_CMD_RESP, -1);
/** * modify appender file to storage server (by file buff) * * @param group_name the group name of appender file * @param appender_filename the appender filename * @param file_offset the offset of appender file * @param file_buff file content/buff * @return 0 for success, != 0 for error (error no) */ public int modify_file(String group_name, String appender_filename, long file_offset, byte[] file_buff) throws IOException, MyException { return this.do_modify_file(group_name, appender_filename, file_offset, file_buff.length, new UploadBuff(file_buff, 0, file_buff.length)); }
/** * upload file to storage server (by callback) * * @param group_name the group name to upload file to, can be empty * @param file_size the file size * @param callback the write data callback object * @param file_ext_name file ext name, do not include dot(.) * @param meta_list meta info array * @return 2 elements string array if success:<br> * <ul><li>results[0]: the group name to store the file</li></ul> * <ul><li>results[1]: the new created filename</li></ul> * return null if fail */ public String[] upload_file(String group_name, long file_size, UploadCallback callback, String file_ext_name, NameValuePair[] meta_list) throws IOException, MyException { final String master_filename = null; final String prefix_name = null; return this.do_upload_file(ProtoCommon.STORAGE_PROTO_CMD_UPLOAD_FILE, group_name, master_filename, prefix_name, file_ext_name, file_size, callback, meta_list); }