int uploader(int argc, char* argv[]){
	/**
		@type simgrid process
		Uploads output file to another host.

		Simgrid process parameters
		--------------------------
		UploadData* data -- pointer to object 
		which contains inforamation about how to replicate output file.
		(destination host, filename, etc.)
	*/

    std::string host_name = MSG_host_get_name(MSG_host_self());
    std::string curFilePath;
    std::string pathAtDest;
    std::string destHostName;
    std::string stor_type;

    msg_file_t file = NULL;

    UploadData* data = (UploadData*) MSG_process_get_data(MSG_process_self());

    destHostName = data->dest;
    destHostName.erase(destHostName.length()-5);
    stor_type = data->dest.back();

    if (destHostName.compare(host_name)) {

        curFilePath = "/" + host_name + "-DISK" + data->filename;
        pathAtDest = "/" + data->dest + data->filename;

        file = MSG_file_open(curFilePath.c_str(), NULL);
        msg_host_t dest = MSG_host_by_name(destHostName.c_str());

        //plusLinkCounter(MSG_host_get_name(MSG_host_self()), destHostName);

        msg_error_t a = MSG_file_rcopy(file, dest, pathAtDest.c_str());
        //if (!atoi(stor_type.c_str())) create_file_label(pathAtDest);

        //trace number of datasets and output traffic from site
        dataset_number_change(data->dest, 1);
        cumulative_output_per_site(host_name, (double) MSG_file_get_size(file));

        if (a == MSG_OK) {
            tracer_traffic(host_name, destHostName, (double) MSG_file_get_size(file));
            minusLinkCounter(host_name, destHostName);
            MSG_file_close(file);
            //XBT_INFO("Creating replica completed at %s", MSG_host_get_name(dest));
        }  else {
            minusLinkCounter(host_name, destHostName);
            MSG_file_close(file);
            XBT_INFO("Transfer fail occurred");
        }
    }

    delete data;

    return 0;

}
Beispiel #2
0
int host(int argc, char *argv[]){
  msg_file_t file = NULL;
  const char* filename;
  sg_size_t read, write;

  file = MSG_file_open(argv[1], NULL);
  filename = MSG_file_get_name(file);
  XBT_INFO("Opened file '%s'",filename);
  MSG_file_dump(file);

  XBT_INFO("Try to read %llu from '%s'",MSG_file_get_size(file),filename);
  read = MSG_file_read(file, MSG_file_get_size(file));
  XBT_INFO("Have read %llu from '%s'. Offset is now at: %llu",read,filename,
      MSG_file_tell(file));
  XBT_INFO("Seek back to the begining of the stream...");
  MSG_file_seek(file, 0, SEEK_SET);
  XBT_INFO("Offset is now at: %llu", MSG_file_tell(file));

  MSG_file_close(file);

  if (argc > 5){
    file = MSG_file_open(argv[2], NULL);
    filename = MSG_file_get_name(file);
    XBT_INFO("Opened file '%s'",filename);
    XBT_INFO("Try to write %llu MiB to '%s'",
        MSG_file_get_size(file)/1024,
        filename);
    write = MSG_file_write(file, MSG_file_get_size(file)*1024);
    XBT_INFO("Have written %llu bytes to '%s'.",write,filename);

    msg_host_t src, dest;
    src= MSG_host_self();
    dest = MSG_get_host_by_name(argv[3]);
    if (atoi(argv[5])){
      XBT_INFO("Move '%s' (of size %llu) from '%s' to '%s'", filename,
           MSG_file_get_size(file), MSG_host_get_name(src),
           argv[3]);
      MSG_file_rmove(file, dest, argv[4]);
    } else {
      XBT_INFO("Copy '%s' (of size %llu) from '%s' to '%s'", filename,
           MSG_file_get_size(file), MSG_host_get_name(src),
           argv[3]);
      MSG_file_rcopy(file, dest, argv[4]);
      MSG_file_close(file);
    }
  }

  return 0;
}
static int host(int argc, char *argv[])
{
  char name[2048];
  int id = MSG_process_self_PID();
  snprintf(name,2048,"%s%i", FILENAME1, id);
  msg_file_t file = MSG_file_open(name, NULL);
  XBT_INFO("process %d is writing!", id);
  MSG_file_write(file, 3000000);
  XBT_INFO("process %d goes to sleep for %d seconds", id, id);
  MSG_process_sleep(id);
  XBT_INFO("process %d is writing again!", id);
  MSG_file_write(file, 3000000);
  XBT_INFO("process %d goes to sleep for %d seconds", id, 6 - id);
  MSG_process_sleep(6-id);
  XBT_INFO("process %d is reading!", id);
  MSG_file_seek(file, 0, SEEK_SET);
  MSG_file_read(file, 3000000);
  XBT_INFO("process %d goes to sleep for %d seconds", id, id);
  MSG_process_sleep(id);
  XBT_INFO("process %d is reading again!", id);
  MSG_file_seek(file, 0, SEEK_SET);
  MSG_file_read(file, 3000000);

  XBT_INFO("process %d => Size of %s: %llu", id, MSG_file_get_name(file), MSG_file_get_size(file));
  MSG_file_close(file);

  return 0;
}
Beispiel #4
0
int host(int argc, char *argv[])
{
  msg_file_t file = NULL;
  sg_size_t write;

  // First open
  XBT_INFO("\tOpen file '%s'",FILENAME1);
  file = MSG_file_open(FILENAME1, NULL);

  // Unlink the file
  XBT_INFO("\tUnlink file '%s'",MSG_file_get_name(file));
  MSG_file_unlink(file);

  // Re Open the file wich is in fact created
  XBT_INFO("\tOpen file '%s'",FILENAME1);
  file = MSG_file_open(FILENAME1, NULL);

  // Write into the new file
  write = MSG_file_write(file,100000);  // Write for 100Ko
  XBT_INFO("\tHave written %llu on %s",write,MSG_file_get_name(file));

  // Write into the new file
  write = MSG_file_write(file,100000);  // Write for 100Ko
  XBT_INFO("\tHave written %llu on %s",write,MSG_file_get_name(file));

  // Close the file
  XBT_INFO("\tClose file '%s'",MSG_file_get_name(file));
  MSG_file_close(file);

  return 0;
}
Beispiel #5
0
int host(int argc, char *argv[])
{
  msg_file_t file = NULL;
  char* mount = xbt_strdup("/home");
  size_t write;

  // First open
  XBT_INFO("\tOpen file '%s'",FILENAME1);
  file = MSG_file_open(mount,FILENAME1);

  // Unlink the file
  XBT_INFO("\tUnlink file '%s'",file->fullname);
  MSG_file_unlink(file);

  // Re Open the file wich is in fact created
  XBT_INFO("\tOpen file '%s'",FILENAME1);
  file = MSG_file_open(mount,FILENAME1);

  // Write into the new file
  write = MSG_file_write(100000,file);  // Write for 100Ko
  XBT_INFO("\tHave written %zu on %s",write,file->fullname);

  // Close the file
  XBT_INFO("\tClose file '%s'",file->fullname);
  MSG_file_close(file);

  xbt_dict_t dict_ls;
  char* key;
  surf_stat_t data = NULL;
  xbt_dict_cursor_t cursor = NULL;

  dict_ls = MSG_file_ls(mount,"./");
  XBT_INFO(" ");XBT_INFO("ls ./");
  xbt_dict_foreach(dict_ls,cursor,key,data){
    if(data) XBT_INFO("FILE : %s",key);
    else     XBT_INFO("DIR  : %s",key);
  }
  xbt_dict_free(&dict_ls);

  dict_ls = MSG_file_ls(mount,"./doc/simgrid/examples/platforms/");
  XBT_INFO(" ");XBT_INFO("ls ./doc/simgrid/examples/platforms/");
  xbt_dict_foreach(dict_ls,cursor,key,data){
    if(data) XBT_INFO("FILE : %s",key);
    else     XBT_INFO("DIR  : %s",key);
  }
  xbt_dict_free(&dict_ls);

  dict_ls = MSG_file_ls(mount,"./doc/simgrid/examples/msg/");
  XBT_INFO(" ");XBT_INFO("ls ./doc/simgrid/examples/msg/");
  xbt_dict_foreach(dict_ls,cursor,key,data){
    if(data) XBT_INFO("FILE : %s",key);
    else     XBT_INFO("DIR  : %s",key);
  }
  xbt_dict_free(&dict_ls);

  free(mount);

  return 0;
}
Beispiel #6
0
static sg_size_t write_local_file(const char *dest, sg_size_t file_size)
{
  sg_size_t written;
  msg_file_t file = MSG_file_open(dest, NULL);
  written = MSG_file_write(file, file_size);
  XBT_INFO("%llu bytes on %llu bytes have been written by %s on /sd1",written, file_size,
           MSG_host_get_name(MSG_host_self()));
  MSG_file_close(file);
  return written;
}
static void action_close(const char *const *action) {
  const char *file_name = action[2];
  msg_file_t file;
  double clock = MSG_get_clock();

  file = get_file_descriptor(file_name);

  ACT_DEBUG("Entering Close: %s (filename: %s)", NAME, file_name);
  MSG_file_close(file);

  log_action(action, MSG_get_clock() - clock);
}
Beispiel #8
0
static sg_size_t read_local_file(const char *src)
{
  sg_size_t read, file_size;
  msg_file_t file = MSG_file_open(src, NULL);
  file_size = MSG_file_get_size(file);

  read = MSG_file_read(file, file_size);
  XBT_INFO("%s has read %llu on %s",MSG_host_get_name(MSG_host_self()),read,src);
  MSG_file_close(file);

  return read;
}
Beispiel #9
0
static void simrelease(const char *const *action) {
  const char *processid = action[0];
  const char *file_name = action[2];
  const char *index = action[4];
  msg_file_t file;
  double clock = MSG_get_clock();       /* this "call" is free thanks to inlining */
  file = get_file_descriptor(file_name,index);
  ACT_DEBUG("Entering Close: %s (filename: %s)", NAME, file_name);
  MSG_file_close(file);
  log_action(action, MSG_get_clock() - clock);
  XBT_INFO("release worker %s%s is done",processid,index);
}
static void simrelease(const char *const *action) {
  const char *processid = action[0];
  const char *file_name = action[2];
  const char *worktime = action[3];
  double sleeptime;
  const char *index = action[4];
  msg_file_t file;
  double clock = MSG_get_clock();       /* this "call" is free thanks to inlining */
  //Because the action release is too fast ,to catch up with the clock of the simulator, we let it to sleep for a while.
  sleeptime = atof(worktime);
  MSG_process_sleep(sleeptime);
  //close slow file
  file = get_file_descriptor("slow",file_name,index);
  ACT_DEBUG("Entering Close: %s (filename: %s)", NAME, file_name);
  MSG_file_close(file);
  //close fast file
  file = get_file_descriptor("fast",file_name,index);
  ACT_DEBUG("Entering Close: %s (filename: %s)", NAME, file_name);
  MSG_file_close(file);
 
  log_action(action, MSG_get_clock() - clock);
  XBT_INFO("release worker %s%s is done",processid,index);
}
Beispiel #11
0
int host(int argc, char *argv[])
{
  msg_file_t file = NULL;
  sg_size_t read,write;
  msg_storage_t st;
  const char* st_name;

  if(!strcmp(MSG_process_get_name(MSG_process_self()),"0")){
    file = MSG_file_open(FILENAME1, NULL);
    MSG_file_dump(file);
    st_name = "Disk4";
  } else if(!strcmp(MSG_process_get_name(MSG_process_self()),"1")) {
    file = MSG_file_open(FILENAME2, NULL);
    st_name = "Disk2";
  } else if(!strcmp(MSG_process_get_name(MSG_process_self()),"2")){
    file = MSG_file_open(FILENAME3, NULL);
    st_name = "Disk3";
  } else if(!strcmp(MSG_process_get_name(MSG_process_self()),"3")){
    file = MSG_file_open(FILENAME4, NULL);
    st_name = "Disk1";
  }
  else xbt_die("FILENAME NOT DEFINED %s",MSG_process_get_name(MSG_process_self()));

  const char* filename = MSG_file_get_name(file);
  XBT_INFO("\tOpen file '%s'",filename);
  st = MSG_storage_get_by_name(st_name);

  XBT_INFO("\tCapacity of the storage element '%s' is stored on: %llu / %llu",
            filename, MSG_storage_get_used_size(st), MSG_storage_get_size(st));

  /* Try to read for 10MB */
  read = MSG_file_read(file, 10000000);
  XBT_INFO("\tHave read %llu from '%s'",read,filename);

  /* Write 100KB in file from the current position, i.e, end of file or 10MB */
  write = MSG_file_write(file, 100000);
  XBT_INFO("\tHave written %llu in '%s'. Size now is: %llu",write,filename,
           MSG_file_get_size(file));


  XBT_INFO("\tCapacity of the storage element '%s' is stored on: %llu / %llu",
            filename, MSG_storage_get_used_size(st), MSG_storage_get_size(st));

  /* rewind to the beginning of the file */
  XBT_INFO("\tComing back to the beginning of the stream for file '%s'",
           filename);
  MSG_file_seek(file, 0, SEEK_SET);

  /* Try to read 110KB */
  read = MSG_file_read(file, 110000);
  XBT_INFO("\tHave read %llu from '%s' (of size %llu)",read,filename,
      MSG_file_get_size(file));

  /* rewind once again to the beginning of the file */
  XBT_INFO("\tComing back to the beginning of the stream for file '%s'",
           filename);
  MSG_file_seek(file, 0, SEEK_SET);

  /* Write 110KB in file from the current position, i.e, end of file or 10MB */
  write = MSG_file_write(file, 110000);
  XBT_INFO("\tHave written %llu in '%s'. Size now is: %llu", write,filename,
      MSG_file_get_size(file));

  XBT_INFO("\tCapacity of the storage element '%s' is stored on: %llu / %llu",
            filename, MSG_storage_get_used_size(st), MSG_storage_get_size(st));

  XBT_INFO("\tClose file '%s'",filename);
  MSG_file_close(file);


  return 0;
}
Beispiel #12
0
JNIEXPORT void JNICALL Java_org_simgrid_msg_File_close(JNIEnv *env, jobject jfile) {
  msg_file_t file = jfile_get_native(env, jfile);

  MSG_file_close(file);
  jfile_bind(env, jfile, nullptr);
}