Code Review
/
ric-plt
/
sdl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Add definable timeout for SyncStorage APIs
[ric-plt/sdl.git]
/
include
/
private
/
syncstorageimpl.hpp
diff --git
a/include/private/syncstorageimpl.hpp
b/include/private/syncstorageimpl.hpp
index
db762e0
..
735274f
100644
(file)
--- a/
include/private/syncstorageimpl.hpp
+++ b/
include/private/syncstorageimpl.hpp
@@
-22,13
+22,13
@@
#ifndef SHAREDDATALAYER_SYNCSTORAGEIMPL_HPP_
#define SHAREDDATALAYER_SYNCSTORAGEIMPL_HPP_
#ifndef SHAREDDATALAYER_SYNCSTORAGEIMPL_HPP_
#define SHAREDDATALAYER_SYNCSTORAGEIMPL_HPP_
+#include <sdl/asyncstorage.hpp>
#include <sdl/syncstorage.hpp>
#include <sdl/syncstorage.hpp>
+#include <sys/poll.h>
#include <system_error>
namespace shareddatalayer
{
#include <system_error>
namespace shareddatalayer
{
- class AsyncStorage;
-
class System;
class SyncStorageImpl: public SyncStorage
class System;
class SyncStorageImpl: public SyncStorage
@@
-39,38
+39,50
@@
namespace shareddatalayer
SyncStorageImpl(std::unique_ptr<AsyncStorage> asyncStorage,
System& system);
SyncStorageImpl(std::unique_ptr<AsyncStorage> asyncStorage,
System& system);
- void set(const Namespace& ns, const DataMap& dataMap) override;
+ virtual void set(const Namespace& ns, const DataMap& dataMap) override;
+
+ virtual bool setIf(const Namespace& ns, const Key& key, const Data& oldData, const Data& newData) override;
-
bool setIf(const Namespace& ns, const Key& key, const Data& oldData, const Data& newD
ata) override;
+
virtual bool setIfNotExists(const Namespace& ns, const Key& key, const Data& d
ata) override;
-
bool setIfNotExists(const Namespace& ns, const Key& key, const Data& data
) override;
+
virtual DataMap get(const Namespace& ns, const Keys& keys
) override;
-
DataMap get
(const Namespace& ns, const Keys& keys) override;
+
virtual void remove
(const Namespace& ns, const Keys& keys) override;
- v
oid remove(const Namespace& ns, const Keys& keys
) override;
+ v
irtual bool removeIf(const Namespace& ns, const Key& key, const Data& data
) override;
-
bool removeIf(const Namespace& ns, const Key& key, const Data& data
) override;
+
virtual Keys findKeys(const Namespace& ns, const std::string& keyPrefix
) override;
-
Keys findKeys(const Namespace& ns, const std::string& keyPrefix
) override;
+
virtual void removeAll(const Namespace& ns
) override;
- void removeAll(const Namespace& ns) override;
+ virtual void setOperationTimeout(const std::chrono::steady_clock::duration& timeout) override;
+
+ static constexpr int NO_TIMEOUT = -1;
private:
std::unique_ptr<AsyncStorage> asyncStorage;
System& system;
private:
std::unique_ptr<AsyncStorage> asyncStorage;
System& system;
- int pFd;
DataMap localMap;
Keys localKeys;
bool localStatus;
std::error_code localError;
bool synced;
DataMap localMap;
Keys localKeys;
bool localStatus;
std::error_code localError;
bool synced;
+ bool isReady;
+ struct pollfd events;
+ std::chrono::steady_clock::duration operationTimeout;
void verifyBackendResponse();
void verifyBackendResponse();
- void waitForCallback();
+ void pollAndHandleEvents(int timeout_ms);
+
+ void waitForReadinessCheckCallback();
+
+ void waitForOperationCallback();
void waitSdlToBeReady(const Namespace& ns);
void waitSdlToBeReady(const Namespace& ns);
+ void waitReadyAck(const std::error_code& error);
+
void modifyAck(const std::error_code& error);
void modifyIfAck(const std::error_code& error, bool status);
void modifyAck(const std::error_code& error);
void modifyIfAck(const std::error_code& error, bool status);
@@
-78,6
+90,8
@@
namespace shareddatalayer
void getAck(const std::error_code& error, const DataMap& dataMap);
void findKeysAck(const std::error_code& error, const Keys& keys);
void getAck(const std::error_code& error, const DataMap& dataMap);
void findKeysAck(const std::error_code& error, const Keys& keys);
+
+ void handlePendingEvents();
};
}
};
}