|
@@ -22,6 +22,8 @@ CmdMan::CmdMan(FileMan &fm) : fileman(fileman) {
|
|
|
execmap["list"] = &CmdMan::cmdList;
|
|
|
execmap["version"] = &CmdMan::cmdVersion;
|
|
|
execmap["login"] = &CmdMan::cmdLogin;
|
|
|
+ execmap["putdata"] = &CmdMan::cmdPutdata;
|
|
|
+// execmap["getdata"] = &CmdMan::cmdGetdata;
|
|
|
|
|
|
/* initialize description map */
|
|
|
helpmap["help"] = descHelp;
|
|
@@ -36,6 +38,8 @@ CmdMan::CmdMan(FileMan &fm) : fileman(fileman) {
|
|
|
handlemap["close"] = &CmdMan::handleClose;
|
|
|
handlemap["put"] = &CmdMan::handlePut;
|
|
|
handlemap["get"] = &CmdMan::handleGet;
|
|
|
+ handlemap["putdata"] = &CmdMan::handlePutdata;
|
|
|
+// handlemap["getdata"] = &CmdMan::handleGetdata;
|
|
|
handlemap["list"] = &CmdMan::handleList;
|
|
|
handlemap["version"] = &CmdMan::handleVersion;
|
|
|
handlemap["login"] = &CmdMan::handleLogin;
|
|
@@ -102,6 +106,21 @@ CmdMan::CmdRet CmdMan::cmdPut(vector<string> args) {
|
|
|
return retval;
|
|
|
}
|
|
|
|
|
|
+CmdMan::CmdRet CmdMan::cmdPutdata(vector<string> args) {
|
|
|
+ CmdRet retval;
|
|
|
+ std::cerr << __PRETTY_FUNCTION__ << " begin" << std::endl;
|
|
|
+ Json::Value root;
|
|
|
+
|
|
|
+ root["command"] = "putdata";
|
|
|
+ root["file"] = fileman.getPutName();
|
|
|
+ root["remaining"] = fileman.getPutChunksRemaining();
|
|
|
+ root["cancel"] = false;
|
|
|
+ retval.type = send;
|
|
|
+ retval.msg = Json::writeString(wbuilder, root);
|
|
|
+
|
|
|
+ return retval;
|
|
|
+}
|
|
|
+
|
|
|
CmdMan::CmdRet CmdMan::cmdGet(vector<string> args) {
|
|
|
CmdRet retval;
|
|
|
std::cerr << __PRETTY_FUNCTION__ << " begin" << std::endl;
|
|
@@ -224,17 +243,57 @@ CmdMan::CmdRet CmdMan::handlePut(Json::Value root) {
|
|
|
std::cerr << __PRETTY_FUNCTION__ << " begin" << std::endl;
|
|
|
|
|
|
retval.type = send;
|
|
|
- retval.msg = Json::writeString(wbuilder, root);
|
|
|
+ if(!root["accept"].asBool()) {
|
|
|
+ retval.type = error;
|
|
|
+ retval.msg = "File upload request failed: Server reports: " + root["error"].asString();
|
|
|
+ } else if(root["file"].asString() != fileman.getPutName()) {
|
|
|
+ retval.type = error;
|
|
|
+ retval.msg = "File upload request failed: Server reports filename " + root["file"].asString() + " but actual filename is " + fileman.getPutName();
|
|
|
+ } else {
|
|
|
+ retval.type = send;
|
|
|
+ retval.msg = "putdata";
|
|
|
+ }
|
|
|
|
|
|
return retval;
|
|
|
}
|
|
|
|
|
|
-CmdMan::CmdRet CmdMan::handleGet(Json::Value root) {
|
|
|
+CmdMan::CmdRet CmdMan::handlePutdata(Json::Value root) {
|
|
|
CmdRet retval;
|
|
|
std::cerr << __PRETTY_FUNCTION__ << " begin" << std::endl;
|
|
|
+ // TODO
|
|
|
|
|
|
- retval.type = send;
|
|
|
- retval.msg = Json::writeString(wbuilder, root);
|
|
|
+ // the passed number of recieved chunks should equal the number of sent chunks
|
|
|
+ unsigned int sentChunks = fileman.getPutChunks() - fileman.getPutChunksRemaining();
|
|
|
+ if(root["received"].asInt() != sentChunks) {
|
|
|
+ retval.type = error;
|
|
|
+ retval.msg = std::string("File upload failed: Server reports number of sent chunks as ") + std::to_string (root["received"].asInt()) + " but actual number is " + std::to_string (sentChunks);
|
|
|
+ } else if(!root["accept"].asBool()) {
|
|
|
+ retval.type = error;
|
|
|
+ retval.msg = "File upload failed: Server reports: " + root["error"].asString();
|
|
|
+ } else if(root["file"].asString() != fileman.getPutName()) {
|
|
|
+ retval.type = error;
|
|
|
+ retval.msg = "File upload request failed: Server reports filename " + root["file"].asString() + " but actual filename is " + fileman.getPutName();
|
|
|
+ } else {
|
|
|
+ // sent successfully
|
|
|
+ if(root["received"].asInt() == fileman.getPutChunks()) {
|
|
|
+ // everything sent
|
|
|
+ retval.type = notsend;
|
|
|
+ retval.msg = "succesfully uploaded file " + fileman.getPutName();
|
|
|
+ fileman.closePut();
|
|
|
+ } else {
|
|
|
+ retval.type = send;
|
|
|
+ retval.msg = "putdata";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return retval;
|
|
|
+}
|
|
|
+
|
|
|
+CmdMan::CmdRet CmdMan::handleGet(Json::Value root) {
|
|
|
+ CmdRet retval;
|
|
|
+ std::cerr << __PRETTY_FUNCTION__ << " begin" << std::endl;
|
|
|
+ // TODO
|
|
|
+ retval.type = error;
|
|
|
+ retval.msg = "Get handler not implemented yet";
|
|
|
|
|
|
return retval;
|
|
|
}
|