package com.nifty.cloud.ncs.transfer;

import java.util.concurrent.Callable;

import com.nifty.cloud.ncs.service.PartETag;
import com.nifty.cloud.ncs.service.StorageClient;
import com.nifty.cloud.ncs.service.UploadPartRequest;

/**
 * パートアップロード用のCallableクラスです。
 */
public class UploadPartCallable implements Callable<PartETag>
{
	private final StorageClient client;
	private final UploadPartRequest request;

	/**
	 * UploadPartCallableを構築します。
	 *
	 * @param client
	 *  ストレージクライアント
	 * @param request
	 *  パートアップロードのリクエスト情報を含むUploadPartRequest
	 */
	public UploadPartCallable(StorageClient client, UploadPartRequest request)
	{
		this.client = client;
		this.request = request;
	}

	/**
	 * パートのアップロードを行います。
	 */
	@Override
	public PartETag call() throws Exception
	{
		return (client.uploadPart(request));
	}
}
