2626#include " openPMD/auxiliary/DerefDynamicCast.hpp"
2727
2828#include < future>
29- #include < iostream>
3029
3130namespace openPMD
3231{
@@ -41,193 +40,7 @@ class AbstractIOHandlerImpl
4140
4241 virtual ~AbstractIOHandlerImpl () = default ;
4342
44- std::future<void > flush ()
45- {
46- using namespace auxiliary ;
47-
48- while (!(*m_handler).m_work .empty ())
49- {
50- IOTask &i = (*m_handler).m_work .front ();
51- try
52- {
53- switch (i.operation )
54- {
55- using O = Operation;
56- case O::CREATE_FILE:
57- createFile (
58- i.writable ,
59- deref_dynamic_cast<Parameter<Operation::CREATE_FILE> >(
60- i.parameter .get ()));
61- break ;
62- case O::CHECK_FILE:
63- checkFile (
64- i.writable ,
65- deref_dynamic_cast<Parameter<Operation::CHECK_FILE> >(
66- i.parameter .get ()));
67- break ;
68- case O::CREATE_PATH:
69- createPath (
70- i.writable ,
71- deref_dynamic_cast<Parameter<O::CREATE_PATH> >(
72- i.parameter .get ()));
73- break ;
74- case O::CREATE_DATASET:
75- createDataset (
76- i.writable ,
77- deref_dynamic_cast<Parameter<O::CREATE_DATASET> >(
78- i.parameter .get ()));
79- break ;
80- case O::EXTEND_DATASET:
81- extendDataset (
82- i.writable ,
83- deref_dynamic_cast<Parameter<O::EXTEND_DATASET> >(
84- i.parameter .get ()));
85- break ;
86- case O::OPEN_FILE:
87- openFile (
88- i.writable ,
89- deref_dynamic_cast<Parameter<O::OPEN_FILE> >(
90- i.parameter .get ()));
91- break ;
92- case O::CLOSE_FILE:
93- closeFile (
94- i.writable ,
95- deref_dynamic_cast<Parameter<O::CLOSE_FILE> >(
96- i.parameter .get ()));
97- break ;
98- case O::OPEN_PATH:
99- openPath (
100- i.writable ,
101- deref_dynamic_cast<Parameter<O::OPEN_PATH> >(
102- i.parameter .get ()));
103- break ;
104- case O::CLOSE_PATH:
105- closePath (
106- i.writable ,
107- deref_dynamic_cast<Parameter<O::CLOSE_PATH> >(
108- i.parameter .get ()));
109- break ;
110- case O::OPEN_DATASET:
111- openDataset (
112- i.writable ,
113- deref_dynamic_cast<Parameter<O::OPEN_DATASET> >(
114- i.parameter .get ()));
115- break ;
116- case O::DELETE_FILE:
117- deleteFile (
118- i.writable ,
119- deref_dynamic_cast<Parameter<O::DELETE_FILE> >(
120- i.parameter .get ()));
121- break ;
122- case O::DELETE_PATH:
123- deletePath (
124- i.writable ,
125- deref_dynamic_cast<Parameter<O::DELETE_PATH> >(
126- i.parameter .get ()));
127- break ;
128- case O::DELETE_DATASET:
129- deleteDataset (
130- i.writable ,
131- deref_dynamic_cast<Parameter<O::DELETE_DATASET> >(
132- i.parameter .get ()));
133- break ;
134- case O::DELETE_ATT:
135- deleteAttribute (
136- i.writable ,
137- deref_dynamic_cast<Parameter<O::DELETE_ATT> >(
138- i.parameter .get ()));
139- break ;
140- case O::WRITE_DATASET:
141- writeDataset (
142- i.writable ,
143- deref_dynamic_cast<Parameter<O::WRITE_DATASET> >(
144- i.parameter .get ()));
145- break ;
146- case O::WRITE_ATT:
147- writeAttribute (
148- i.writable ,
149- deref_dynamic_cast<Parameter<O::WRITE_ATT> >(
150- i.parameter .get ()));
151- break ;
152- case O::READ_DATASET:
153- readDataset (
154- i.writable ,
155- deref_dynamic_cast<Parameter<O::READ_DATASET> >(
156- i.parameter .get ()));
157- break ;
158- case O::GET_BUFFER_VIEW:
159- getBufferView (
160- i.writable ,
161- deref_dynamic_cast<Parameter<O::GET_BUFFER_VIEW> >(
162- i.parameter .get ()));
163- break ;
164- case O::READ_ATT:
165- readAttribute (
166- i.writable ,
167- deref_dynamic_cast<Parameter<O::READ_ATT> >(
168- i.parameter .get ()));
169- break ;
170- case O::LIST_PATHS:
171- listPaths (
172- i.writable ,
173- deref_dynamic_cast<Parameter<O::LIST_PATHS> >(
174- i.parameter .get ()));
175- break ;
176- case O::LIST_DATASETS:
177- listDatasets (
178- i.writable ,
179- deref_dynamic_cast<Parameter<O::LIST_DATASETS> >(
180- i.parameter .get ()));
181- break ;
182- case O::LIST_ATTS:
183- listAttributes (
184- i.writable ,
185- deref_dynamic_cast<Parameter<O::LIST_ATTS> >(
186- i.parameter .get ()));
187- break ;
188- case O::ADVANCE:
189- advance (
190- i.writable ,
191- deref_dynamic_cast<Parameter<O::ADVANCE> >(
192- i.parameter .get ()));
193- break ;
194- case O::AVAILABLE_CHUNKS:
195- availableChunks (
196- i.writable ,
197- deref_dynamic_cast<Parameter<O::AVAILABLE_CHUNKS> >(
198- i.parameter .get ()));
199- break ;
200- case O::KEEP_SYNCHRONOUS:
201- keepSynchronous (
202- i.writable ,
203- deref_dynamic_cast<Parameter<O::KEEP_SYNCHRONOUS> >(
204- i.parameter .get ()));
205- break ;
206- case O::DEREGISTER:
207- deregister (
208- i.writable ,
209- deref_dynamic_cast<Parameter<O::DEREGISTER> >(
210- i.parameter .get ()));
211- break ;
212- }
213- }
214- catch (...)
215- {
216- std::cerr << " [AbstractIOHandlerImpl] IO Task "
217- << internal::operationAsString (i.operation )
218- << " failed with exception. Clearing IO queue and "
219- " passing on the exception."
220- << std::endl;
221- while (!m_handler->m_work .empty ())
222- {
223- m_handler->m_work .pop ();
224- }
225- throw ;
226- }
227- (*m_handler).m_work .pop ();
228- }
229- return std::future<void >();
230- }
43+ std::future<void > flush ();
23144
23245 /* *
23346 * Close the file corresponding with the writable and release file handles.
0 commit comments