From be87d8a3ebfb84bc3d0e4393d94fed727072edc9 Mon Sep 17 00:00:00 2001
From: afederici <ajf5@illinois.edu>
Date: Sat, 21 Nov 2020 15:54:23 -0600
Subject: [PATCH] logging

---
 Wc                | Bin 189136 -> 189352 bytes
 mappers/wc.cpp    |   4 ++++
 src/Node.cpp      |  15 +++++++++------
 src/TcpSocket.cpp |  14 +++++++-------
 src/Utils.cpp     |   4 ++--
 5 files changed, 22 insertions(+), 15 deletions(-)

diff --git a/Wc b/Wc
index 39b695f56e837a420befc3d41d00cc4a68a0e147..15698478922ff0906eaced616ba3352c376927dc 100755
GIT binary patch
delta 29662
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

delta 29319
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

diff --git a/mappers/wc.cpp b/mappers/wc.cpp
index 81a006c..dd2307b 100644
--- a/mappers/wc.cpp
+++ b/mappers/wc.cpp
@@ -6,6 +6,10 @@ int main(int argc, char **argv) {
     std::string delim = " ";
     while (std::getline(file, str))
     {
+        for (int i = 0; i < str.size(); i++) {
+            if (str[i] == '.' || str[i] == ',' || str[i] == '?' || str[i] == ';' || str[i] == '!') str[i] = ' ';
+            str[i] = tolower(str[i]);
+        }
         std::vector<std::string> temp = splitString(str, delim);
         for (auto &e : temp) std::cout << e << "," << "1" << std::endl;
     }
diff --git a/src/Node.cpp b/src/Node.cpp
index 5efec02..71e98e0 100644
--- a/src/Node.cpp
+++ b/src/Node.cpp
@@ -908,19 +908,22 @@ void Node::handleTcpMessage()
 					close(dataPipe[0]);close(dataPipe[1]);
 					//go thorugh and process things from datapipe
 					//if processing success, send out TCP MAPLEACK
-					string match = "tmp-" + sdfsPre;
+					string match = "tmp-";
 					int matchLen = match.size();
 					struct dirent *entry = nullptr;
 					DIR *dp = nullptr;
 					if ((dp = opendir(".")) == nullptr) { cout << "tmp directory error " << match << endl; break; }
 					while ((entry = readdir(dp))){
-						cout << "[FILES] found " << entry->d_name << " looking to match " << to_string(matchLen) << " chars from " << match << endl;
+						//cout << "[FILES] found " << entry->d_name << " looking to match " << to_string(matchLen) << " chars from " << match << endl;
 					    if (strncmp(entry->d_name, match.c_str(), matchLen) == 0){
 							string searcher(entry->d_name);
-							string target = searcher.substr(4);
-							cout << "[CHUNKACK] found " << entry->d_name << endl;
+							string target = searcher.substr(4); //get rid of tmp for official keys
+							//cout << "[CHUNKACK] found " << entry->d_name << endl;
+
+							//TODO: add prefix here
 							Messages outMsg(DNS, nodeInformation.ip + "::" + to_string(hashRingPosition) + "::" + target + "::" + entry->d_name + "::" + to_string(-1) + "::" + to_string(-1) + "::" + target + "::" + "0");
-							cout << "[PUT] Got localfilename: " << entry->d_name << " with sdfsfilename: " << target << endl;
+
+							//cout << "[PUT] Got localfilename: " << entry->d_name << " with sdfsfilename: " << target << endl;
 							tcpServent->sendMessage(leaderIP, TCPPORT, outMsg.toString());
 						}
 					}
@@ -1043,7 +1046,7 @@ void Node::handleTcpMessage()
 						// update fileList, client itself is one of the replicas
 						updateFileList(sdfsfilename, nodePosition);
 						fileSizes[sdfsfilename] = make_tuple(size, lines);
-						hashRing->debugHashRing();
+						//hashRing->debugHashRing();
 						int closestNode = hashRing->locateClosestNode(sdfsfilename);
 						int pred = hashRing->getPredecessor(closestNode);
 						int succ = hashRing->getSuccessor(closestNode);
diff --git a/src/TcpSocket.cpp b/src/TcpSocket.cpp
index 277bd03..fa9c6c2 100644
--- a/src/TcpSocket.cpp
+++ b/src/TcpSocket.cpp
@@ -233,9 +233,9 @@ int TcpSocket::messageHandler(int sockfd, string payloadMessage, string returnIP
 				localfilename = sdfsfilename+"_"+to_string(fileTimestamp);
 				if (overwriteFilename.compare("") != 0) {
 					localfilename = overwriteFilename;
-					cout << "it's GET with filename " << overwriteFilename << endl;
+					//cout << "it's GET with filename " << overwriteFilename << endl;
 				}
-				cout << "backup filename " << localfilename << endl;
+				//cout << "backup filename " << localfilename << endl;
 			} else {
 				//exec, read, start, tmp, prefix
 				localfilename = fields[3]; //tempfile to read from
@@ -263,11 +263,11 @@ int TcpSocket::messageHandler(int sockfd, string payloadMessage, string returnIP
 			cout << "we have " << to_string(byteReceived) << " bytes from this connection" << endl;
 			fclose(fp);
 
-			FileObject f(localfilename);
-			if(incomingChecksum.compare(f.checksum) != 0 && incomingChecksum.compare("") != 0){
-				cout << "[ERROR] FILE CORRUPTED" << endl;
+			//FileObject f(localfilename);
+			//if(incomingChecksum.compare(f.checksum) != 0 && incomingChecksum.compare("") != 0){
+			//	cout << "[ERROR] FILE CORRUPTED" << endl;
 				// TODO: Handel file corruption here
-			} else {
+			//} else {
 				if (start != -1){
 					//IP, exec, start, temp, actual file
 					Messages putack(CHUNKACK, returnIP + "::" + sdfsfilename + "::" + to_string(start) + "::" + localfilename + "::" + remoteLocalname);
@@ -276,7 +276,7 @@ int TcpSocket::messageHandler(int sockfd, string payloadMessage, string returnIP
 					Messages putack(PUTACK, returnIP + "::" + sdfsfilename + "::" + localfilename+"::"+remoteLocalname);
 					regMessages.push(putack.toString());
 				}
-			}
+			//}
 			break;
 		}
 		case DNSANS:
diff --git a/src/Utils.cpp b/src/Utils.cpp
index 5c7cd89..2c06f2c 100644
--- a/src/Utils.cpp
+++ b/src/Utils.cpp
@@ -63,11 +63,11 @@ void handlePipe(int file) {
 		std::string key(strtok(str, delim));
     	std::string val(strtok(NULL, delim));
 		string keyFile = "tmp-" + key;
-		string write = key + "," + val + "\n";
+		string write = key + "," + val;
 		tmp = fopen(keyFile.c_str(), "ab");
 		fwrite(write.c_str(),sizeof(char),write.size(),tmp);
 		fclose(tmp);
-		cout << "[PIPE] " << key << " to " << keyFile << endl;
+		//cout << "[PIPE] " << key << " to " << keyFile << endl;
 	}
     fclose (stream);
   }
-- 
GitLab