19 #ifndef SIMPLE_REQUEST_CC
20 #define SIMPLE_REQUEST_CC
35 #define BLOCK_HEADER_SIZE 20
38 template <
class RequestType,
class ResponseType,
class ReturnType,
class... RequestTypeParams>
43 size_t bytesForRequest,
45 RequestTypeParams&&... args) {
55 myLogger->error(errMsg);
56 myLogger->error(
"simpleRequest: not able to connect to server.\n");
58 std::cout <<
"ERROR: can not connect to remote server with port=" << port
59 <<
" and address=" << address << std::endl;
62 myLogger->info(std::string(
"Successfully connected to remote server with port=") +
63 std::to_string(port) + std::string(
" and address=") + address);
64 PDB_COUT <<
"Successfully connected to remote server with port=" << port
65 <<
" and address=" << address << std::endl;
67 PDB_COUT <<
"bytesForRequest=" << bytesForRequest << std::endl;
69 std::cout <<
"ERROR: too small buffer size for processing simple request" << std::endl;
73 PDB_COUT <<
"to make object" << std::endl;
75 PDB_COUT <<
"to send object" << std::endl;
77 myLogger->error(errMsg);
78 myLogger->error(
"simpleRequest: not able to send request to server.\n");
86 PDB_COUT <<
"sent object..." << std::endl;
88 ReturnType finalResult;
90 if (objectSize == 0) {
98 void* memory = malloc(objectSize);
99 if (memory ==
nullptr) {
100 errMsg =
"FATAL ERROR in simpleRequest: Can't allocate memory";
101 myLogger->error(errMsg);
102 std::cout << errMsg << std::endl;
108 myLogger->error(errMsg);
109 myLogger->error(
"simpleRequest: not able to get next object over the wire.\n");
121 finalResult = processResponse(result);
129 template <
class RequestType,
class SecondRequestType,
class ResponseType,
class ReturnType>
134 size_t bytesForRequest,
144 myLogger->error(errMsg);
145 myLogger->error(
"simpleRequest: not able to connect to server.\n");
147 std::cout <<
"ERROR: can not connect to remote server with port=" << port
148 <<
" and address=" << address << std::endl;
151 std::cout <<
"Successfully connected to remote server with port=" << port
152 <<
" and address=" << address << std::endl;
155 myLogger->error(errMsg);
156 myLogger->error(
"simpleDoubleRequest: not able to send first request to server.\n");
160 if (!temp.
sendObject(secondRequest, errMsg)) {
161 myLogger->error(errMsg);
162 myLogger->error(
"simpleDoubleRequest: not able to send second request to server.\n");
167 ReturnType finalResult;
172 myLogger->error(errMsg);
173 myLogger->error(
"simpleRequest: not able to get next object over the wire.\n");
177 finalResult = processResponse(result);
size_t getSizeOfNextObject()
bool sendObject(Handle< ObjType > &sendMe, std::string &errMsg)
bool connectToInternetServer(PDBLoggerPtr logToMeIn, int portNumber, std::string serverAddress, std::string &errMsg)
Handle< ObjType > getNextObject(void *readToHere, bool &success, std::string &errMsg)
ReturnType simpleDoubleRequest(PDBLoggerPtr myLogger, int port, std::string address, ReturnType onErr, size_t bytesForRequest, function< ReturnType(Handle< ResponseType >)> processResponse, Handle< RequestType > &firstRequest, Handle< SecondRequestType > &secondRequest)
std::shared_ptr< PDBLogger > PDBLoggerPtr
ReturnType simpleRequest(PDBLoggerPtr myLogger, int port, std::string address, ReturnType onErr, size_t bytesForRequest, function< ReturnType(Handle< ResponseType >)> processResponse, RequestTypeParams &&...args)
#define BLOCK_HEADER_SIZE