22
33extern 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-
245RecvDecode::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}
0 commit comments