parent
4ab7c4af18
commit
daec3d7f00
@ -1 +1,2 @@ |
||||
test/test |
||||
test/*.txt |
@ -0,0 +1,68 @@ |
||||
#ifndef _ASYNCO_FS_ |
||||
#define _ASYNCO_FS_ |
||||
|
||||
#include "asynco.hpp" |
||||
|
||||
|
||||
#include <fstream> |
||||
#include <iostream> |
||||
|
||||
using namespace std; |
||||
|
||||
namespace marcelb { |
||||
|
||||
/**
|
||||
* Asynchronous file reading |
||||
*/ |
||||
template<typename Callback> |
||||
void asynco_read(string path, Callback&& callback) { |
||||
asynco( [&path, callback] () { |
||||
string content; |
||||
try { |
||||
string line; |
||||
ifstream file (path); |
||||
if (file.is_open()) { |
||||
line.clear(); |
||||
while ( getline (file,line) ) { |
||||
content += line + "\n"; |
||||
} |
||||
file.close(); |
||||
} |
||||
|
||||
else { |
||||
throw runtime_error("Unable to open file");
|
||||
} |
||||
|
||||
callback(content, nullptr); |
||||
} catch(exception& error) { |
||||
callback(content, &error); |
||||
} |
||||
}); |
||||
} |
||||
|
||||
/**
|
||||
* Asynchronous file writing |
||||
*/ |
||||
template<typename Callback> |
||||
void asynco_write(string path, string content, Callback&& callback) { |
||||
asynco( [&path, &content, callback] () { |
||||
try { |
||||
ofstream file (path); |
||||
if (file.is_open()) { |
||||
file << content; |
||||
file.close(); |
||||
} |
||||
else { |
||||
throw runtime_error("Unable to open file");
|
||||
} |
||||
|
||||
callback(nullptr); |
||||
} catch(exception& error) { |
||||
callback(&error); |
||||
} |
||||
}); |
||||
} |
||||
|
||||
} |
||||
|
||||
#endif |
Loading…
Reference in new issue