SIONlib  1.7.4
Scalable I/O library for parallel access to task-local files
sion_cxx_serial.cpp
1 
2 #include <iostream>
3 #include "sion_cxx_serial.hpp"
4 
5 namespace sionlib {
6 
7  namespace serial {
8 
9  SIONFile::SIONFile() {
10  }
11 
12  SIONFile::SIONFile(std::string sion_file_name, std::string mode, int num_tasks,
13  int num_files, sion_int64 * chunk_sizes, sion_int32 _fs_blk_size, int * global_ranks) {
14 
15  size_t ncharacter = sion_file_name.length()+1;
16  const char * tmp_sion_file_name = sion_file_name.c_str();
17 
18  _sion_file_name = new char[ncharacter];
19 
20  strncpy(_sion_file_name, tmp_sion_file_name, ncharacter);
21 
22  _mode = mode;
23  _num_files = num_files;
24  _num_tasks = num_tasks;
25 
26  _rank = 0;
27 
28  // _chunk_sizes = NULL;
29  _fs_blk_size = -1;
30  // _global_ranks = global_ranks;
31 
32  _file_ptr = NULL;
33 
34  }
35 
36  SIONFile::~SIONFile() {
37  delete [] _sion_file_name;
38  _sion_file_name = NULL;
39  }
40 
41  void SIONFile::open() {
42  _sid = sion_open(_sion_file_name, _mode.c_str(), &_num_tasks, &_num_files,
43  &_chunk_sizes, &_fs_blk_size, &_global_ranks, &_file_ptr);
44  }
45 
46  void SIONFile::openRank() {
47  _sid = sion_open_rank(_sion_file_name, _mode.c_str(), &_chunk_size,
48  &_fs_blk_size, &_rank, &_file_ptr);
49  }
50 
51  int SIONFile::close() {
52  return sion_close(_sid);
53  }
54 
55  } /* serial */
56 } /* namespace sionlib */
int sion_close(int sid)
Close a sion file.
Definition: sion_serial.c:106
int sion_open_rank(char *fname, const char *file_mode, sion_int64 *chunksize, sion_int32 *fsblksize, int *rank, FILE **fileptr)
Open a sion file for a specific rank.
Definition: sion_serial.c:83
int sion_open(char *fname, const char *file_mode, int *ntasks, int *nfiles, sion_int64 **chunksizes, sion_int32 *fsblksize, int **globalranks, FILE **fileptr)
Open a sion file in serial mode.
Definition: sion_serial.c:54