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; }
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; }
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; }
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; }
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); }
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; }
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); }
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; }
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); }