19 #ifndef STORAGE_CLIENT_TEMPLATE_CC
20 #define STORAGE_CLIENT_TEMPLATE_CC
41 template <
class DataType>
43 std::string databaseName,
54 if (result !=
nullptr)
55 if (!result->getRes().first) {
56 myLogger->error(
"Error sending data: " + result->getRes().second);
57 errMsg =
"Error sending data: " + result->getRes().second;
64 getTypeName<DataType>(),
68 template <
class DataType>
73 std::string typeName = getTypeName<DataType>();
74 std::cout <<
"typeName for set to create =" << typeName << std::endl;
75 return simpleRequest<StorageAddSet, SimpleRequestResult, bool>(
82 if (result !=
nullptr) {
83 if (!result->getRes().first) {
84 errMsg =
"Error creating set: " + result->getRes().second;
85 myLogger->error(
"Error creating set: " + result->getRes().second);
90 errMsg =
"Error getting type name: got nothing back from catalog";
100 template <
class DataType>
104 std::string typeName = getTypeName<DataType>();
105 std::cout <<
"typeName for set to remove =" << typeName << std::endl;
106 return simpleRequest<StorageRemoveUserSet, SimpleRequestResult, bool>(
113 if (result !=
nullptr) {
114 if (!result->getRes().first) {
115 errMsg =
"Error removing set: " + result->getRes().second;
116 myLogger->error(
"Error removing set: " + result->getRes().second);
121 errMsg =
"Error getting type name: got nothing back from catalog";
136 template <
class DataType>
139 std::string& errMsg) {
141 std::cout <<
"retrieveData can only work for PangeaStorageServer\n";
144 std::string typeName = getTypeName<DataType>();
145 return compositeRequest<StorageGetData, StorageGetDataResponse, bool>(
152 if (response ==
nullptr) {
153 errMsg =
"Error getting type name : got nothing back from storage";
156 int numPages = response->getNumPages();
157 std::string fileName = response->getSetName();
158 std::cout <<
"fileName =" << fileName << std::endl;
159 int filedesc = open(fileName.c_str(), O_CREAT | O_WRONLY | O_APPEND);
161 std::cout <<
"total page number =" << numPages << std::endl;
163 for (
int i = 0; i < numPages; i++) {
166 char* recvBuffer = (
char*)malloc(response->getRawPageSize());
167 success = communicator.receiveBytes(recvBuffer, errMsg);
168 if (success ==
false) {
176 sizeof(int) +
sizeof(
size_t));
178 for (
int j = 0; j < objects->size(); j++) {
179 if (j % 10000 == 0) {
180 std::cout <<
"the " << j <<
"-th object:" << std::endl;
181 unsafeCast<DataType, Object>((*objects)[j])->print();
182 std::cout << std::endl;
185 write(filedesc, recvBuffer, response->getRawPageSize());
198 template <
class DataType>
201 std::cout <<
"scanData can only work for PangeaStorageServer\n";
204 std::string typeName = getTypeName<DataType>();
205 std::cout <<
"typeName for set to create =" << typeName << std::endl;
206 return simpleRequest<StorageTestSetScan, SimpleRequestResult, bool>(
213 if (result !=
nullptr) {
214 if (!result->getRes().first) {
215 errMsg =
"Error creating set: " + result->getRes().second;
216 myLogger->error(
"Error scanning data: " + result->getRes().second);
221 errMsg =
"Error getting type name: got nothing back from server";
228 template <
class DataType>
230 std::string srcSetName,
231 std::string destDatabaseName,
232 std::string destSetName,
233 std::string& errMsg) {
235 std::cout <<
"scanData can only work for PangeaStorageServer\n";
238 std::string typeName = getTypeName<DataType>();
239 std::cout <<
"typeName for set to create =" << typeName << std::endl;
240 return simpleRequest<StorageTestSetCopy, SimpleRequestResult, bool>(
247 if (result !=
nullptr) {
248 if (!result->getRes().first) {
249 errMsg =
"Error creating set: " + result->getRes().second;
250 myLogger->error(
"Error copying data: " + result->getRes().second);
255 errMsg =
"Error getting type name: got nothing back from server";
Handle< ObjType > getRootObject()
bool retrieveData(std::string databaseName, std::string setName, std::string &errMsg)
bool createSet(std::string databaseName, std::string setName, std::string &errMsg)
bool scanData(std::string databaseName, std::string setName, std::string &errMsg)
bool removeSet(std::string databaseName, std::string setName, std::string &errMsg)
bool createSet(std::string databaseName, std::string setName, std::string &errMsg)
bool copyData(std::string srcDatabaseName, std::string srcSetName, std::string destDatabaseName, std::string destSetName, std::string &errMsg)
bool storeData(Handle< Vector< Handle< DataType >>> data, std::string databaseName, std::string setName, std::string &errMsg, bool typeCheck=true)