#include "TosClientV2.h"
using namespace VolcengineTos;
static void CopyCallBack(std::shared_ptr<CopyEvent> event) {
CopyEventType type_ = event->type_;
bool error_ = event->error_;
std::string bucket_ = event->bucket_;
std::string key_ = event->key_;
std::string fileInfo = bucket_ + key_;
std::shared_ptr<std::string> uploadId_ = event->uploadId_;
std::shared_ptr<std::string> checkpointFile_ = event->checkpointFile_;
std::shared_ptr<CopyPartInfo> uploadPartInfo_ = event->copyPartInfo_;
std::string uploadPartInfo = "";
if (uploadPartInfo_ != nullptr) {
uploadPartInfo = std::to_string(uploadPartInfo_->partNumber_) + "," +
std::to_string(uploadPartInfo_->copySourceRangeStart_) + "," +
std::to_string(uploadPartInfo_->copySourceRangeEnd_) + "," + *(uploadPartInfo_->eTag_);
std::cout << "type:" << type_ << ","
<< "error:" << error_ << ","
<< "fileInfo:" << fileInfo << ","
<< "checkpointFile:" << *checkpointFile_ << ","
<< "uploadId:" << *uploadId_ << ","
<< "uploadPartInf:" << uploadPartInfo << std::endl;
std::string region = "Your Region";
std::string accessKey = std::getenv("TOS_ACCESS_KEY");
std::string secretKey = std::getenv("TOS_SECRET_KEY");
std::string bucketName = "destbucket";
std::string objectName = "destdir/exampleobject.txt";
std::string srcBucketName = "srcbucket";
std::string srcObjectName = "srcdir/exampleobject.txt";
std::string CheckpointFilePath = "yourCheckpointFilepath";
TosClientV2 client(region, accessKey, secretKey);
ResumableCopyObjectInput input;
input.setBucket(bucketName);
input.setKey(objectName);
input.setSrcBucket(srcBucketName);
input.setSrcKey(srcObjectName);
input.setEnableCheckpoint(true);
input.setPartSize(5 * 1024 * 1024);
CopyEventListener copyHandler = {CopyCallBack};
input.setCopyEventListener(copyHandler);
auto output = client.resumableCopyObject(input);
if (!output.isSuccess()) {
std::cout << "ResumableCopyObject failed." << output.error().String() << std::endl;
std::cout << "ResumableCopyObject success. object etag is: " << output.result().getETag() << std::endl;