SIONlib  1.7.4
Scalable I/O library for parallel access to task-local files
sion_cxx_base.hpp
1 #ifndef SION_CXX_BASE_HPP_
2 #define SION_CXX_BASE_HPP_
3 
4 #include "sion.h"
5 #include <string>
6 #include <string.h>
7 
8 class SION_Base {
9 
10 public:
11  SION_Base() : _sid(-9999) {}
12  ~SION_Base() {}
13 
14 
15  // Common functions
16  char* getSionFileName() const;
17 
18  void setMode(std::string mode);
19  std::string getMode() const;
20 
21  void setNumberOfFiles(int num_files);
22  int getNumberOfFiles() const;
23 
24  void setNumberOfTasks(int num_tasks);
25  int getNumberOfTasks() const;
26 
27  void setRank(int rank);
28  int getRank() const;
29 
30  void setChunkSize(sion_int64 chunk_size);
31  sion_int64 getChunkSize() const;
32 
33  void setChunkSizes(sion_int64 * chunk_sizes);
34  sion_int64 * getChunkSizes() const;
35 
36  void setGlobalRanks(int * global_ranks);
37  int * getGlobalRanks() const;
38 
39  void setFileSystemBlockSize(sion_int32 fs_blk_size);
40  sion_int32 getFileSystemBlockSize() const;
41 
42  int getNumberOfSuccessfulReadElements() const;
43 
44  int getSid() const;
45 
46  int getReturnCode() const;
47 
48 
49  /* Seeking */
50  void seek();
51  // void seekFp();
52 
53  /* get information (with sion datatypes) */
54  int getFileEndianness() const;
55  sion_int64 getBytesWritten() const;
56  sion_int64 getBytesRead() const;
57  sion_int64 getBytesAvailInBlock() const;
58  sion_int64 getBytesAvailInChunk() const;
59  sion_int64 getPosition() const;
60 
61 protected:
62  // Common attributes
63  char * _sion_file_name;
64  std::string _mode;
65  int _num_files;
66  int _num_tasks;
67  int _rank;
68  sion_int64 * _chunk_sizes;
69  sion_int64 _chunk_size;
70  sion_int32 _fs_blk_size;
71  int * _global_ranks;
72  FILE * _file_ptr;
73  int _number_of_elements_sucessfully_read;
74  int _return_code;
75  int _sid;
76 
77  // get information (with sion datatypes)
78  int _file_endianness;
79  sion_int64 _bytes_written;
80  sion_int64 _bytes_read;
81  sion_int64 _bytes_avail_in_block;
82  sion_int64 _bytes_avail_in_chunk;
83  sion_int64 _position;
84 
85 };
86 
87 #endif /* SION_CXX_BASE_HPP_ */