26 #include <ibrcommon/data/File.h>
27 #include <ibrcommon/thread/Mutex.h>
28 #include <ibrcommon/thread/MutexLock.h>
29 #include <ibrcommon/thread/Queue.h>
30 #include <ibrcommon/thread/Thread.h>
31 #include <ibrcommon/thread/Semaphore.h>
34 #ifndef DATASTORAGE_H_
35 #define DATASTORAGE_H_
55 virtual std::string
getId()
const = 0;
56 virtual std::ostream&
serialize(std::ostream &stream) = 0;
65 Hash(
const ibrcommon::File &file);
78 istream(ibrcommon::Mutex &mutex,
const ibrcommon::File &file);
83 std::ifstream *_stream;
84 ibrcommon::Mutex &_lock;
97 DataStorage(
Callback &callback,
const ibrcommon::File &path,
unsigned int write_buffer = 0,
bool initialize =
false);
104 void remove(
const Hash &hash);
142 class StoreDataTask :
public Task
145 StoreDataTask(
const Hash &
h, Container *c);
146 virtual ~StoreDataTask();
149 std::auto_ptr<Container> _container;
152 class RemoveDataTask :
public Task
155 RemoveDataTask(
const Hash &
h);
156 virtual ~RemoveDataTask();
162 ibrcommon::File _path;
163 ibrcommon::Queue< Task* > _tasks;
164 ibrcommon::Semaphore _store_sem;
168 ibrcommon::Mutex _global_mutex;
virtual void eventDataStorageRemoveFailed(const Hash &hash, const ibrcommon::Exception &)=0
istream(ibrcommon::Mutex &mutex, const ibrcommon::File &file)
void setFaulty(bool mode)
std::istream & operator*()
DataStorage(Callback &callback, const ibrcommon::File &path, unsigned int write_buffer=0, bool initialize=false)
virtual std::string getId() const =0
bool operator<(const Hash &other) const
virtual void eventDataStorageRemoved(const Hash &hash)=0
bool operator==(const Hash &other) const
bool operator!=(const Hash &other) const
DataStorage::istream retrieve(const Hash &hash)
virtual void iterateDataStorage(const Hash &hash, DataStorage::istream &stream)=0
virtual std::ostream & serialize(std::ostream &stream)=0
const Hash store(Container *data)
virtual void eventDataStorageStored(const Hash &hash)=0
virtual void eventDataStorageStoreFailed(const Hash &hash, const ibrcommon::Exception &)=0
DataNotAvailableException(string what="Requested data is not available.")