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