Skip to content

Commit 3f0f020

Browse files
committed
rewrite download procedure, test passed, clean up
1 parent 835486d commit 3f0f020

File tree

8 files changed

+29
-191
lines changed

8 files changed

+29
-191
lines changed

TEDStore/src/CMakeLists.txt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,8 @@ endif()
99
set(OPENSSL_INCLUDE_PATH ../lib/openssl/include)
1010
set(OPENSSL_LIBRARY_PATH ../lib/openssl/)
1111

12-
# set(LEVELDB_INCLUDE_PATH ../lib/leveldb/include)
13-
# set(LEVELDB_LIBRARY_PATH ../lib/leveldb/build)
14-
15-
set(LEVELDB_INCLUDE_PATH ~/Library/leveldb-1.22/include)
16-
set(LEVELDB_LIBRARY_PATH ~/Library/leveldb-1.22/build)
12+
set(LEVELDB_INCLUDE_PATH ../lib/leveldb/include)
13+
set(LEVELDB_LIBRARY_PATH ../lib/leveldb/build)
1714

1815
include_directories(${BOOST_INCLUDE_DIR} ${LEVELDB_INCLUDE_PATH} ${OPENSSL_INCLUDE_PATH} ../include)
1916
link_directories(${BOOST_LIBRARY_DIR} ${LEVELDB_LIBRARY_PATH} ${OPENSSL_LIBRARY_PATH} util)

TEDStore/src/client/keyClient.cpp

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,6 @@ struct timeval timeendKey;
99
struct timeval timestartKeySocket;
1010
struct timeval timeendKeySocket;
1111

12-
void PRINT_BYTE_ARRAY_KEYC(
13-
FILE* file, void* mem, uint32_t len)
14-
{
15-
if (!mem || !len) {
16-
fprintf(file, "\n( null )\n");
17-
return;
18-
}
19-
uint8_t* array = (uint8_t*)mem;
20-
fprintf(file, "%u bytes:\n{\n", len);
21-
uint32_t i = 0;
22-
for (i = 0; i < len - 1; i++) {
23-
fprintf(file, "0x%x, ", array[i]);
24-
if (i % 8 == 7)
25-
fprintf(file, "\n");
26-
}
27-
fprintf(file, "0x%x ", array[i]);
28-
fprintf(file, "\n}\n");
29-
}
30-
3112
keyClient::keyClient(Sender* senderObjTemp)
3213
{
3314
inputMQ_ = new messageQueue<Data_t>;
@@ -222,18 +203,7 @@ bool keyClient::keyExchange(u_char* batchHashList, int batchNumber, u_char* batc
222203

223204
bool keyClient::encodeChunk(Data_t& newChunk)
224205
{
225-
// cout << "original data" << endl;
226-
PRINT_BYTE_ARRAY_KEYC(stdout, newChunk.chunk.logicData, newChunk.chunk.logicDataSize);
227206
bool statusChunk = cryptoObj_->encryptChunk(newChunk.chunk);
228-
// cout << "original key" << endl;
229-
// PRINT_BYTE_ARRAY_KEYC(stdout, newChunk.chunk.encryptKey, CHUNK_ENCRYPT_KEY_SIZE);
230-
// cout << "encrypted data" << endl;
231-
// PRINT_BYTE_ARRAY_KEYC(stdout, newChunk.chunk.logicData, newChunk.chunk.logicDataSize);
232-
// cryptoObj_->decryptChunk(newChunk.chunk);
233-
// cout << "decrypted structure data" << endl;
234-
// PRINT_BYTE_ARRAY_KEYC(stdout, newChunk.chunk.logicData, newChunk.chunk.logicDataSize);
235-
// cryptoObj_->decryptChunk(newChunk.chunk);
236-
237207
bool statusHash = cryptoObj_->generateHash(newChunk.chunk.logicData, newChunk.chunk.logicDataSize, newChunk.chunk.chunkHash);
238208
if (!statusChunk) {
239209
cerr << "KeyClient : error encrypt chunk" << endl;

TEDStore/src/client/recvDecode.cpp

Lines changed: 20 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,6 @@
22

33
extern Configure config;
44

5-
void PRINT_BYTE_ARRAY_RECV(
6-
FILE* file, void* mem, uint32_t len)
7-
{
8-
if (!mem || !len) {
9-
fprintf(file, "\n( null )\n");
10-
return;
11-
}
12-
uint8_t* array = (uint8_t*)mem;
13-
fprintf(file, "%u bytes:\n{\n", len);
14-
uint32_t i = 0;
15-
for (i = 0; i < len - 1; i++) {
16-
fprintf(file, "0x%x, ", array[i]);
17-
if (i % 8 == 7)
18-
fprintf(file, "\n");
19-
}
20-
fprintf(file, "0x%x ", array[i]);
21-
fprintf(file, "\n}\n");
22-
}
23-
245
RecvDecode::RecvDecode(string fileName)
256
{
267
clientID_ = config.getClientID();
@@ -74,15 +55,15 @@ bool RecvDecode::processRecipe(Recipe_t& recipeHead, RecipeList_t& recipeList, u
7455
memcpy(&respond, respondBuffer, sizeof(NetworkHeadStruct_t));
7556
if (respond.messageType == ERROR_CLOSE) {
7657
cerr << "RecvDecode : Server reject download request!" << endl;
77-
exit(1);
58+
return false;
7859
}
7960
if (respond.messageType == ERROR_FILE_NOT_EXIST) {
8061
cerr << "RecvDecode : Server reject download request, file not exist in server!" << endl;
81-
exit(1);
62+
return false;
8263
}
8364
if (respond.messageType == ERROR_CHUNK_NOT_EXIST) {
8465
cerr << "RecvDecode : Server reject download request, chunk not exist in server!" << endl;
85-
exit(1);
66+
return false;
8667
}
8768
if (respond.messageType == SUCCESS) {
8869
uint64_t recipeLength = respond.dataSize;
@@ -100,11 +81,11 @@ bool RecvDecode::processRecipe(Recipe_t& recipeHead, RecipeList_t& recipeList, u
10081
if (recvSize != respond.dataSize + sizeof(NetworkHeadStruct_t)) {
10182
cerr << "RecvDecode : recv encrypted file recipe size error" << endl;
10283
} else {
103-
cerr << "RecvDecode : recv encrypted file recipe size =" << respond.dataSize << endl;
84+
// cerr << "RecvDecode : recv encrypted file recipe size =" << respond.dataSize << endl;
10485
u_char clientKey[32];
10586
memset(clientKey, 1, 32);
10687
memcpy(&recipeHead, encryptedRecipeBuffer + sizeof(NetworkHeadStruct_t), sizeof(Recipe_t));
107-
cerr << "RecvDecode : recv encrypted file recipes done, file size = " << recipeHead.fileRecipeHead.fileSize << endl;
88+
// cerr << "RecvDecode : recv encrypted file recipes done, file size = " << recipeHead.fileRecipeHead.fileSize << endl;
10889
cryptoObj_->decryptWithKey(encryptedRecipeBuffer + sizeof(NetworkHeadStruct_t) + sizeof(Recipe_t), recipeLength - sizeof(Recipe_t), clientKey, decryptedRecipeBuffer);
10990
u_char* requestChunkList = (u_char*)malloc(sizeof(u_char) * sizeof(RecipeEntry_t) * recipeHead.fileRecipeHead.totalChunkNumber + sizeof(NetworkHeadStruct_t));
11091
for (uint64_t i = 0; i < recipeHead.fileRecipeHead.totalChunkNumber; i++) {
@@ -129,21 +110,20 @@ bool RecvDecode::processRecipe(Recipe_t& recipeHead, RecipeList_t& recipeList, u
129110
cerr << "RecvDecode : storage server closed" << endl;
130111
return false;
131112
} else {
132-
cerr << "RecvDecode : process recipe done, send recipe size = " << recipeListSize << " to server" << endl;
133-
}
134-
135-
request.messageType = CLIENT_UPLOAD_DECRYPTED_RECIPE;
136-
request.dataSize = recipeHead.fileRecipeHead.totalChunkNumber * sizeof(RecipeEntry_t);
137-
sendSize = recipeHead.fileRecipeHead.totalChunkNumber * sizeof(RecipeEntry_t) + sizeof(NetworkHeadStruct_t);
138-
memcpy(requestChunkList, &request, sizeof(NetworkHeadStruct_t));
139-
if (!socket_.Send(requestChunkList, sendSize)) {
140-
free(requestChunkList);
141-
cerr << "RecvDecode : storage server closed" << endl;
142-
return false;
143-
} else {
144-
free(requestChunkList);
145-
cerr << "RecvDecode : process recipe done, send to server done, send size = " << sendSize << endl;
146-
return true;
113+
// cerr << "RecvDecode : process recipe done, send recipe size = " << recipeListSize << " to server" << endl;
114+
request.messageType = CLIENT_UPLOAD_DECRYPTED_RECIPE;
115+
request.dataSize = recipeHead.fileRecipeHead.totalChunkNumber * sizeof(RecipeEntry_t);
116+
sendSize = recipeHead.fileRecipeHead.totalChunkNumber * sizeof(RecipeEntry_t) + sizeof(NetworkHeadStruct_t);
117+
memcpy(requestChunkList, &request, sizeof(NetworkHeadStruct_t));
118+
if (!socket_.Send(requestChunkList, sendSize)) {
119+
free(requestChunkList);
120+
cerr << "RecvDecode : storage server closed" << endl;
121+
return false;
122+
} else {
123+
free(requestChunkList);
124+
// cerr << "RecvDecode : process recipe done, send to server done, send size = " << sendSize << endl;
125+
return true;
126+
}
147127
}
148128
}
149129
} else {
@@ -176,7 +156,6 @@ void RecvDecode::run()
176156
u_char requestBuffer[sendSize];
177157
u_char respondBuffer[NETWORK_MESSAGE_DATA_SIZE];
178158
int recvSize;
179-
uint64_t totalChunkSize = 0;
180159

181160
memcpy(requestBuffer, &request, sizeof(NetworkHeadStruct_t));
182161
memcpy(requestBuffer + sizeof(NetworkHeadStruct_t), fileNameHash_, FILE_NAME_HASH_SIZE);
@@ -211,16 +190,10 @@ void RecvDecode::run()
211190
memcpy(&chunkSize, respondBuffer + sizeof(NetworkHeadStruct_t) + totalRecvSize, sizeof(int));
212191
totalRecvSize += sizeof(int);
213192
cryptoObj_->decryptChunk(respondBuffer + sizeof(NetworkHeadStruct_t) + totalRecvSize, chunkSize, fileRecipeList_[chunkID].chunkKey, chunkPlaintData);
214-
PRINT_BYTE_ARRAY_RECV(stdout, chunkPlaintData, chunkSize);
215-
// PRINT_BYTE_ARRAY_RECV(stdout, fileRecipeList_[chunkID].chunkKey, CHUNK_ENCRYPT_KEY_SIZE);
216-
// PRINT_BYTE_ARRAY_RECV(stdout, respondBuffer + sizeof(NetworkHeadStruct_t) + totalRecvSize, chunkSize);
217-
// cerr << "chunk id = " << chunkID << " chunk size = " << chunkSize << endl;
218-
totalChunkSize += chunkSize;
219193
RetrieverData_t newData;
220194
newData.ID = chunkID;
221195
newData.logicDataSize = chunkSize;
222196
memcpy(newData.logicData, chunkPlaintData, chunkSize);
223-
// PRINT_BYTE_ARRAY_RECV(stdout, chunkPlaintData, chunkSize);
224197
if (!insertMQToRetriever(newData)) {
225198
cerr << "RecvDecode : Error insert chunk data into retriever" << endl;
226199
}
@@ -229,6 +202,6 @@ void RecvDecode::run()
229202
totalRecvChunks += chunkNumber;
230203
}
231204
}
232-
cerr << "RecvDecode : download job done, exit now, total chunk size = " << totalChunkSize << endl;
205+
cerr << "RecvDecode : download job done, exit now" << endl;
233206
return;
234207
}

TEDStore/src/client/retriever.cpp

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,5 @@
11
#include "retriever.hpp"
22

3-
void PRINT_BYTE_ARRAY_WRITE(
4-
FILE* file, void* mem, uint32_t len)
5-
{
6-
if (!mem || !len) {
7-
fprintf(file, "\n( null )\n");
8-
return;
9-
}
10-
uint8_t* array = (uint8_t*)mem;
11-
fprintf(file, "%u bytes:\n{\n", len);
12-
uint32_t i = 0;
13-
for (i = 0; i < len - 1; i++) {
14-
fprintf(file, "0x%x, ", array[i]);
15-
if (i % 8 == 7)
16-
fprintf(file, "\n");
17-
}
18-
fprintf(file, "0x%x ", array[i]);
19-
fprintf(file, "\n}\n");
20-
}
21-
223
Retriever::Retriever(string fileName, RecvDecode*& recvDecodeObjTemp)
234
{
245
recvDecodeObj_ = recvDecodeObjTemp;
@@ -40,7 +21,6 @@ void Retriever::recvThread()
4021
while (totalRecvNumber_ < totalChunkNumber_) {
4122
if (extractMQFromRecvDecode(newData)) {
4223
retrieveFile_.write(newData.logicData, newData.logicDataSize);
43-
// cerr << newData.logicData << endl;
4424
totalRecvNumber_++;
4525
}
4626
}

TEDStore/src/client/sender.cpp

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,6 @@ struct timeval timeendSenderReadMQ;
1010
struct timeval timestartSenderRecipe;
1111
struct timeval timeendSenderRecipe;
1212

13-
void PRINT_BYTE_ARRAY_SENDER(
14-
FILE* file, void* mem, uint32_t len)
15-
{
16-
if (!mem || !len) {
17-
fprintf(file, "\n( null )\n");
18-
return;
19-
}
20-
uint8_t* array = (uint8_t*)mem;
21-
fprintf(file, "%u bytes:\n{\n", len);
22-
uint32_t i = 0;
23-
for (i = 0; i < len - 1; i++) {
24-
fprintf(file, "0x%x, ", array[i]);
25-
if (i % 8 == 7)
26-
fprintf(file, "\n");
27-
}
28-
fprintf(file, "0x%x ", array[i]);
29-
fprintf(file, "\n}\n");
30-
}
31-
3213
Sender::Sender()
3314
{
3415
inputMQ_ = new messageQueue<Data_t>;
@@ -52,11 +33,8 @@ bool Sender::sendRecipe(Recipe_t request, RecipeList_t recipeList, int& status)
5233
int totalRecipeNumber = recipeList.size();
5334
int totalRecipeSize = totalRecipeNumber * sizeof(RecipeEntry_t) + sizeof(Recipe_t);
5435
u_char* recipeBuffer = (u_char*)malloc(sizeof(u_char) * totalRecipeNumber * sizeof(RecipeEntry_t));
55-
PRINT_BYTE_ARRAY_SENDER(stdout, &request.fileRecipeHead.fileNameHash, FILE_NAME_HASH_SIZE);
5636
for (int i = 0; i < totalRecipeNumber; i++) {
5737
memcpy(recipeBuffer + i * sizeof(RecipeEntry_t), &recipeList[i], sizeof(RecipeEntry_t));
58-
// cerr << "DataSR : recv chunk id = " << recipeList[i].chunkID << ", chunk size = " << recipeList[i].chunkSize << endl;
59-
// PRINT_BYTE_ARRAY_SENDER(stdout, recipeList[i].chunkKey, CHUNK_ENCRYPT_KEY_SIZE);
6038
}
6139
u_char clientKey[32];
6240
memset(clientKey, 1, 32);

TEDStore/src/server/dataSR.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,20 +62,20 @@ void DataSR::run(Socket socket)
6262
break;
6363
}
6464
case CLIENT_UPLOAD_DECRYPTED_RECIPE: {
65-
cerr << "DataSR : current recipe size = " << recipeSize << ", toatl chunk number = " << restoredFileRecipe.fileRecipeHead.totalChunkNumber << endl;
65+
// cerr << "DataSR : current recipe size = " << recipeSize << ", toatl chunk number = " << restoredFileRecipe.fileRecipeHead.totalChunkNumber << endl;
6666
uint64_t decryptedRecipeListSize = 0;
6767
memcpy(&decryptedRecipeListSize, recvBuffer + sizeof(NetworkHeadStruct_t), sizeof(uint64_t));
68-
cerr << "DataSR : process recipe list size = " << decryptedRecipeListSize << endl;
68+
// cerr << "DataSR : process recipe list size = " << decryptedRecipeListSize << endl;
6969
u_char* recvDecryptedRecipeBuffer = (u_char*)malloc(sizeof(u_char) * decryptedRecipeListSize + sizeof(NetworkHeadStruct_t));
7070
if (socket.Recv(recvDecryptedRecipeBuffer, recvSize)) {
7171
NetworkHeadStruct_t tempHeader;
7272
memcpy(&tempHeader, recvDecryptedRecipeBuffer, sizeof(NetworkHeadStruct_t));
73-
cerr << "DataSR : CLIENT_UPLOAD_DECRYPTED_RECIPE, recv message type " << tempHeader.messageType << ", message size = " << tempHeader.dataSize << endl;
73+
// cerr << "DataSR : CLIENT_UPLOAD_DECRYPTED_RECIPE, recv message type " << tempHeader.messageType << ", message size = " << tempHeader.dataSize << endl;
7474
} else {
7575
cerr << "DataSR : recv decrypted file recipe error " << endl;
7676
}
7777
int restoreChunkNumber = restoredFileRecipe.fileRecipeHead.totalChunkNumber;
78-
cerr << "DataSR : target restore chunk number = " << restoreChunkNumber << endl;
78+
// cerr << "DataSR : target restore chunk number = " << restoreChunkNumber << endl;
7979
// memcpy(&restoredFileRecipe, recvDecryptedRecipeBuffer + sizeof(NetworkHeadStruct_t), sizeof(Recipe_t));
8080
for (int i = 0; i < restoreChunkNumber; i++) {
8181
RecipeEntry_t newRecipeEntry;
@@ -90,14 +90,14 @@ void DataSR::run(Socket socket)
9090
case CLIENT_DOWNLOAD_ENCRYPTED_RECIPE: {
9191

9292
if (storageObj_->restoreRecipesSize((char*)recvBuffer + sizeof(NetworkHeadStruct_t), recipeSize)) {
93-
cerr << "StorageCore : restore file size = " << recipeSize << endl;
93+
// cerr << "StorageCore : restore file size = " << recipeSize << endl;
9494
netBody.messageType = SUCCESS;
9595
netBody.dataSize = recipeSize;
9696
sendSize = sizeof(NetworkHeadStruct_t);
9797
memset(sendBuffer, 0, NETWORK_MESSAGE_DATA_SIZE);
9898
memcpy(sendBuffer, &netBody, sizeof(NetworkHeadStruct_t));
9999
socket.Send(sendBuffer, sendSize);
100-
cerr << "StorageCore : send recipe size done" << endl;
100+
// cerr << "StorageCore : send recipe size done" << endl;
101101
u_char* recipeBuffer = (u_char*)malloc(sizeof(u_char) * recipeSize);
102102
storageObj_->restoreRecipes((char*)recvBuffer + sizeof(NetworkHeadStruct_t), recipeBuffer, recipeSize);
103103
u_char* sendRecipeBuffer = (u_char*)malloc(sizeof(u_char) * recipeSize + sizeof(NetworkHeadStruct_t));
@@ -106,7 +106,7 @@ void DataSR::run(Socket socket)
106106
sendSize = sizeof(NetworkHeadStruct_t) + recipeSize;
107107
socket.Send(sendRecipeBuffer, sendSize);
108108
memcpy(&restoredFileRecipe, recipeBuffer, sizeof(Recipe_t));
109-
cerr << "StorageCore : send recipe list done, file size = " << restoredFileRecipe.fileRecipeHead.fileSize << ", total chunk number = " << restoredFileRecipe.fileRecipeHead.totalChunkNumber << endl;
109+
// cerr << "StorageCore : send recipe list done, file size = " << restoredFileRecipe.fileRecipeHead.fileSize << ", total chunk number = " << restoredFileRecipe.fileRecipeHead.totalChunkNumber << endl;
110110
free(sendRecipeBuffer);
111111
free(recipeBuffer);
112112
} else {

TEDStore/src/server/storageCore.cpp

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,6 @@ extern Configure config;
88
extern Database fp2ChunkDB;
99
extern Database fileName2metaDB;
1010

11-
void PRINT_BYTE_ARRAY_STORAGE_CORE(
12-
FILE* file, void* mem, uint32_t len)
13-
{
14-
if (!mem || !len) {
15-
fprintf(file, "\n( null )\n");
16-
return;
17-
}
18-
uint8_t* array = (uint8_t*)mem;
19-
fprintf(file, "%u bytes:\n{\n", len);
20-
uint32_t i = 0;
21-
for (i = 0; i < len - 1; i++) {
22-
fprintf(file, "0x%x, ", array[i]);
23-
if (i % 8 == 7)
24-
fprintf(file, "\n");
25-
}
26-
fprintf(file, "0x%x ", array[i]);
27-
fprintf(file, "\n}\n");
28-
}
29-
3011
StorageCore::StorageCore()
3112
{
3213
RecipeNamePrefix_ = config.getRecipeRootPath();
@@ -82,7 +63,6 @@ bool StorageCore::storeChunks(NetworkHeadStruct_t& networkHead, char* data)
8263
for (int i = 0; i < chunkNumber; i++) {
8364
int currentChunkSize;
8465
string originHash(data + readSize, CHUNK_HASH_SIZE);
85-
// cerr << "save chunk hash" << endl;
8666
readSize += CHUNK_HASH_SIZE;
8767
memcpy(&currentChunkSize, data + readSize, sizeof(int));
8868
readSize += sizeof(int);
@@ -126,7 +106,6 @@ bool StorageCore::restoreRecipesSize(char* fileNameHash, uint64_t& recipeSize)
126106
{
127107
string recipeName;
128108
string DBKey(fileNameHash, FILE_NAME_HASH_SIZE);
129-
PRINT_BYTE_ARRAY_STORAGE_CORE(stdout, fileNameHash, FILE_NAME_HASH_SIZE);
130109
if (fileName2metaDB.query(DBKey, recipeName)) {
131110
ifstream RecipeIn;
132111
string readRecipeName;
@@ -139,9 +118,6 @@ bool StorageCore::restoreRecipesSize(char* fileNameHash, uint64_t& recipeSize)
139118
RecipeIn.seekg(0, std::ios::end);
140119
recipeSize = RecipeIn.tellg();
141120
RecipeIn.seekg(0, std::ios::beg);
142-
// u_char* recipeBuffer = (u_char*)malloc(sizeof(u_char) * recipeSize);
143-
// RecipeIn.read((char*)recipeBuffer, recipeSize);
144-
// recipeContent = recipeBuffer;
145121
RecipeIn.close();
146122
return true;
147123
}
@@ -156,7 +132,6 @@ bool StorageCore::restoreRecipes(char* fileNameHash, u_char* recipeContent, uint
156132
{
157133
string recipeName;
158134
string DBKey(fileNameHash, FILE_NAME_HASH_SIZE);
159-
PRINT_BYTE_ARRAY_STORAGE_CORE(stdout, fileNameHash, FILE_NAME_HASH_SIZE);
160135
if (fileName2metaDB.query(DBKey, recipeName)) {
161136
ifstream RecipeIn;
162137
string readRecipeName;
@@ -187,7 +162,6 @@ bool StorageCore::storeRecipes(char* fileNameHash, u_char* recipeContent, uint64
187162
string writeRecipeName, buffer, recipeName;
188163

189164
string DBKey(fileNameHash, FILE_NAME_HASH_SIZE);
190-
PRINT_BYTE_ARRAY_STORAGE_CORE(stdout, fileNameHash, FILE_NAME_HASH_SIZE);
191165
if (fileName2metaDB.query(DBKey, recipeName)) {
192166
cerr << "StorageCore : current file's recipe exist, modify it now" << recipeName << endl;
193167
writeRecipeName = RecipeNamePrefix_ + recipeName + RecipeNameTail_;

0 commit comments

Comments
 (0)