Changeset 4461

Show
Ignore:
Timestamp:
03/28/12 14:43:52 (2 years ago)
Author:
hacarralero
Message:

Finalización del código para envío de ficheros por sockets.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • tolgrid/tolmachine/trunk/TOLGrid-TOLMACHINE/tgstream.cpp

    r4446 r4461  
    12461246    error = ERROR_NOT_ERROR; 
    12471247    FILE *f = fopen(filepath, "r"); 
     1248    int r = -1; 
    12481249    if (f == NULL) { 
    12491250        switch (errno) { 
     
    12701271        } 
    12711272    } else { 
    1272         fseek(f, 0L, SEEK_END); 
    1273         long fsize = ftell(f); 
    1274         int r= this->writeInt(fsize); 
    1275         /*Se chequea si hubo error de comunicación*/ 
    1276         if (error != ERROR_NOT_ERROR) { 
    1277  
     1273        char *oza = (char *) malloc(32767); 
     1274        if (oza == NULL) { 
     1275            this->error = ERROR_NOT_ENOUGH_MEMORY; /* No se puedo asignar memoria */ 
    12781276        } else { 
    1279             rewind(f); 
    1280             do { 
    1281                 int c = fread(oza, 32767, 1, f); 
    1282                 if (c == 0) { 
    1283                     if (!feof(f)) { 
    1284                         etm = ERROR_TM_INTERNAL_FILE_ERROR; 
    1285                     } 
    1286                     break; 
    1287                 } else { 
    1288                     tgs. 
    1289                             writeBytes(client_socket, oza, c); 
    1290                     /*Se chequea si hubo error de comunicación*/ 
    1291                     if (getError() != ERRORCOM_NOTERROR) { 
    1292                         /*Se ha producido un error de comunicación con el cliente de TOLMachine*/ 
    1293                         printf("\nERROR15: CAN'T WRITE TO CLIENT\n"); 
    1294                         status = DEAD; 
     1277            fseek(f, 0L, SEEK_END); 
     1278            long fsize = ftell(f); 
     1279            r = this->writeInt(fsize); 
     1280            /*Se chequea si hubo error de comunicación*/ 
     1281            if (error == ERROR_NOT_ERROR) { 
     1282                rewind(f); 
     1283                do { 
     1284                    int c = fread(oza, 32767, 1, f); 
     1285                    if (c == 0) { 
     1286                        if (!feof(f)) { 
     1287                             error= ERROR_FILE_IO; 
     1288                        } 
    12951289                        break; 
    1296                     } 
    1297                 } 
    1298             } while (true); 
    1299         } 
    1300     } 
    1301 } 
    1302 fclose(f); 
    1303 } 
    1304  
    1305 } 
     1290                    } else { 
     1291                        r= this->writeBytes(oza, c); 
     1292                        /*Se chequea si hubo error de comunicación*/ 
     1293                        if (error != ERROR_NOT_ERROR) { 
     1294                            /*Se ha producido un error de comunicación */ 
     1295                            break; 
     1296                        } 
     1297                    } 
     1298                } while (true); 
     1299            } 
     1300        } 
     1301    } 
     1302    if (f!=NULL) { 
     1303        fclose(f); 
     1304    } 
     1305    return r; 
     1306}