int main(int argc, char *argv[]) { struct Pieces *piece_tracker; struct Tor *tor = malloc(sizeof(struct Tor)); tor->name = "testName"; tor->length = 1024; tor->num_pieces = 16; piece_tracker = initialize_file(tor); //printf("piece_tracker->fp_parts%s\n", piece_tracker->fp_parts); printf("piece_tracker->orig_name is: %s\n", piece_tracker->orig_name); //storing a block now char *data_to_store = "abcdefg"; int index = 5; int begin = 3; int length = 7; store_block(piece_tracker, tor, data_to_store, index, begin, length); }
// Sends the requested files to the Hooli file transfer server // @param hftpd a pointer to the server information // @param client a pointer to the client information // @return -1 if there was an error, 1 otherwise int hooli_file_sync(server_info *hftpd, client_info *client) { int sockfd; // The socket for communication with the server int seq = 0; // The sequence number int count = 0; file_info *file; host server; // Server address sockfd = create_udp_client_socket(hftpd->server, hftpd->port, &server); csv_record *p = client->response_list; // Loop through all the requested files while (p != NULL) { count++; file = create_file(); initialize_file(file, client, p); send_initialize(sockfd, &server, &seq, file, client, hftpd, p, count); // Keep sending data messages until a file is transferred while (!file->file_transferred) { manage_file_buffer(file); send_data(sockfd, &server, &seq, file); update_progress(file); } //end while final_progress_update(file); free_file_info(file); p = p->next; } //end while send_termination(sockfd, &server, &seq, p, client); // Close the socket close(sockfd); return 1; } //end hooli_file_sync
ErrorCode WriteTemplate::write_file(const char *file_name, const bool /* overwrite (commented out to remove warning) */, const FileOptions& /*opts*/, const EntityHandle *ent_handles, const int num_sets, const std::vector<std::string>&, const Tag* , int , int ) { assert(0 != mMaterialSetTag && 0 != mNeumannSetTag && 0 != mDirichletSetTag); // check the file name if (NULL == strstr(file_name, ".template")) return MB_FAILURE; std::vector<EntityHandle> matsets, dirsets, neusets, entities; fileName = file_name; // separate into material sets, dirichlet sets, neumann sets if (num_sets == 0) { // default to all defined sets Range this_range; mbImpl->get_entities_by_type_and_tag(0, MBENTITYSET, &mMaterialSetTag, NULL, 1, this_range); std::copy(this_range.begin(), this_range.end(), std::back_inserter(matsets)); this_range.clear(); mbImpl->get_entities_by_type_and_tag(0, MBENTITYSET, &mDirichletSetTag, NULL, 1, this_range); std::copy(this_range.begin(), this_range.end(), std::back_inserter(dirsets)); this_range.clear(); mbImpl->get_entities_by_type_and_tag(0, MBENTITYSET, &mNeumannSetTag, NULL, 1, this_range); std::copy(this_range.begin(), this_range.end(), std::back_inserter(neusets)); } else { int dummy; for (const EntityHandle *iter = ent_handles; iter < ent_handles+num_sets; iter++) { if (MB_SUCCESS == mbImpl->tag_get_data(mMaterialSetTag, &(*iter), 1, &dummy)) matsets.push_back(*iter); else if (MB_SUCCESS == mbImpl->tag_get_data(mDirichletSetTag, &(*iter), 1, &dummy)) dirsets.push_back(*iter); else if (MB_SUCCESS == mbImpl->tag_get_data(mNeumannSetTag, &(*iter), 1, &dummy)) neusets.push_back(*iter); } } // if there is nothing to write just return. if (matsets.empty() && dirsets.empty() && neusets.empty()) return MB_FILE_WRITE_ERROR; std::vector<WriteTemplate::MaterialSetData> matset_info; std::vector<WriteTemplate::DirichletSetData> dirset_info; std::vector<WriteTemplate::NeumannSetData> neuset_info; MeshInfo mesh_info; matset_info.clear(); if(gather_mesh_information(mesh_info, matset_info, neuset_info, dirset_info, matsets, neusets, dirsets) != MB_SUCCESS) { reset_matset(matset_info); return MB_FAILURE; } // try to open the file after gather mesh info succeeds if (/* test for file open failure */ false) { reset_matset(matset_info); return MB_FAILURE; } if( initialize_file(mesh_info) != MB_SUCCESS) { reset_matset(matset_info); return MB_FAILURE; } if( write_nodes(mesh_info.num_nodes, mesh_info.nodes, mesh_info.num_dim) != MB_SUCCESS ) { reset_matset(matset_info); return MB_FAILURE; } if( write_matsets(mesh_info, matset_info, neuset_info) ) { reset_matset(matset_info); return MB_FAILURE; } return MB_SUCCESS; }