Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
// 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
Ejemplo n.º 3
0
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;
}