Esempio n. 1
0
static int sync_do_upload () {
    char **files;
    char **cursor;
    const char* directory = editor_sync_get_export_path();
    int count;
    upload_context *  context;
    char * full_path;
    int size;
    const char *header;

    files = roadmap_path_list (directory, ".wud");

    count = 0;
    for (cursor = files; *cursor != NULL; ++cursor) {
        count++;
    }

    //
    cursor = files;
    count = 0;
    //

    context= malloc(sizeof(upload_context));
    context->cursor = cursor;
    context->files = files;
    full_path = roadmap_path_join( directory, *cursor );
    context->full_path = full_path;


    SyncProgressItems = count;
    SyncProgressCurrentItem = 1;
    SyncProgressLoaded = 0;
    SyncUploadNumMessages = 0;

    // this starts the async sending sequence. Further progress is done through the callbacks.
    size = roadmap_file_length (NULL, full_path);
    header = roadmap_http_async_get_upload_header(DEFAULT_CONTENT_TYPE, full_path, size, RealTime_GetUserName(), Realtime_GetPassword());
    if (!roadmap_http_async_post_file(&gUploadCallbackFunctions, (void *)context, editor_upload_get_url(), header, full_path, size))
    {
        roadmap_log( ROADMAP_ERROR, "File upload error, couldn't start sync socket connect. for file %s ", full_path);
//	  roadmap_path_free(full_path);
//	  roadmap_path_list_free (files);
//	  free(context);
        return 0;
    }

    return 1;
}
Esempio n. 2
0
/*
 * Called once one file was sent successfully. Starts the sending of the next file, if there is one.
 */
static void upload_done( void *context, char *last_modified, const char *format, ... ) {
    upload_context *  uContext = (upload_context *)context;
    char msg[MAX_SIZEOF_RESPONSE_MSG];
    va_list ap;
    char ** new_cursor;
    char * new_full_path;

    if(format) {
        va_start(ap, format);
        vsnprintf(msg,sizeof(msg),format,ap);
        va_end(ap);
        roadmap_log(ROADMAP_DEBUG,"done uploading file : %s. Received response : %s",*uContext->cursor,msg);
        strncpy(SyncUploadMessages[SyncUploadNumMessages], msg, MAX_SIZEOF_RESPONSE_MSG);
    }

    SyncProgressCurrentItem ++ ;
    SyncProgressLoaded = 0;
    SyncUploadNumMessages  ++;

    new_cursor = (uContext->cursor)+1;
    roadmap_file_remove(NULL, uContext->full_path); // remove the previous file

    if( (*new_cursor == NULL )  || ( SyncUploadNumMessages == MAX_MSGS ) ) {
        roadmap_path_list_free(uContext->files);
        roadmap_log(ROADMAP_DEBUG, "finished uploading editor_sync files");

    } else {
        int size;
        const char *header;

        upload_context * new_context;
        new_full_path = roadmap_path_join( editor_sync_get_export_path(), *new_cursor );
        new_context= malloc(sizeof(upload_context));
        new_context->cursor = new_cursor;
        new_context->files = uContext->files;
        new_context->full_path = new_full_path;
        size = roadmap_file_length (NULL, new_full_path);
        header = roadmap_http_async_get_upload_header(DEFAULT_CONTENT_TYPE, new_full_path, size, RealTime_GetUserName(), Realtime_GetPassword());
        if (!roadmap_http_async_post_file(&gUploadCallbackFunctions, (void *)new_context, editor_upload_get_url(), header, new_full_path, size))
        {
            roadmap_log( ROADMAP_ERROR, "File upload error, couldn't start sync socket connect. for file %s ", new_full_path);
            roadmap_path_free(new_full_path);
            roadmap_path_list_free (new_context->files);
            free(new_context);
        }
    }

    roadmap_path_free(uContext->full_path);
    free(uContext);
}
Esempio n. 3
0
///////////////////////////////////////////////////////
// Compress files and prepare for upload
int prepare_for_upload ()
{
   int res;
   char out_filename[256];
   char **files;
   char **cursor;
   const char* directory;
   int count;
   int total;
   time_t now;
	struct tm *tms;
   char year[5], month[5], day[5];
#ifdef RIMAPI
   timeStruct time_s;
#endif
   sprintf (warning_message,"%s",roadmap_lang_get("Preparing files for upload..."));
   ssd_progress_msg_dialog_show(warning_message);
   roadmap_main_flush();


   //Count files for upload
   directory = roadmap_path_gps();
   files = roadmap_path_list (directory, ".csv");
   count = 1; //Counting also the postmortem
   for (cursor = files; *cursor != NULL; ++cursor) {
      count++;
   }

   total = count;
   count = 0;



   //Prepare log
   count++;
   sprintf (warning_message,"%s\n%d/%d",roadmap_lang_get("Preparing files for upload..."),count, total);
   ssd_progress_msg_dialog_show(warning_message);
   roadmap_main_flush();

   // Building the filename
   time( &now );
   tms = localtime( &now );
#ifdef RIMAPI
   roadmap_time_get_time(&time_s);
   tms->tm_hour = time_s.hours;
   tms->tm_min =  time_s.minutes;
#endif
   GET_2_DIGIT_STRING( tms->tm_mday, day );
   GET_2_DIGIT_STRING( tms->tm_mon+1, month );	// Zero based from January
   GET_2_DIGIT_STRING( tms->tm_year-100, year ); // Year from 1900
   snprintf(out_filename,256, "%s%s%s__%d_%d__%s_%d_%s__%s.gz", day, month, year,
           tms->tm_hour, tms->tm_min, RealTime_GetUserName(), RT_DEVICE_ID, roadmap_start_version(), roadmap_log_filename());
#ifndef RIMAPI
   res = roadmap_zlib_compress(roadmap_log_path(), roadmap_log_filename(), roadmap_path_debug(), out_filename, COMPRESSION_LEVEL,TRUE);
#else
   // 0 = Z_OK = SUCCESS. 1 = failure.
   res = NOPH_ZLib_compress(roadmap_log_path(), roadmap_log_filename(), roadmap_path_debug(),out_filename,COMPRESSION_LEVEL);
   strcpy(zipped_log_name,out_filename); // emporary until path_list is implemented
#endif

   if (res != Z_OK) {
      ssd_progress_msg_dialog_hide();
      return 0;
   }


   //Prepare CSV files
   for (cursor = files; *cursor != NULL; ++cursor) {
      count++;
      sprintf (warning_message,"%s\n%d/%d",roadmap_lang_get("Preparing files for upload..."),count, total);
      ssd_progress_msg_dialog_show(warning_message);
      roadmap_main_flush();

      sprintf(out_filename, "%s%s.gz", *cursor, RealTime_GetUserName());
#ifndef J2ME
      res = roadmap_zlib_compress(directory, *cursor, roadmap_path_debug(), out_filename, COMPRESSION_LEVEL,FALSE);
#else
      // 0 = Z_OK = SUCCESS. 1 = failure.
      res = NOPH_ZLib_compress(directory, *cursor, roadmap_path_debug(),out_filename,COMPRESSION_LEVEL);
#endif
      if (res != Z_OK) {
         ssd_progress_msg_dialog_hide();
         return 0;
      } else {
         roadmap_file_remove(directory, *cursor);
      }
   }

   roadmap_path_list_free (files);



   ssd_progress_msg_dialog_hide();
   return 1;
}