liuxiaolong
2021-07-20 58d904a328c0d849769b483e901a0be9426b8209
src/robust.h
@@ -21,6 +21,7 @@
#include "bh_util.h"
#include "log.h"
#include <string.h>
#include <atomic>
#include <chrono>
#include <unistd.h>
@@ -54,7 +55,7 @@
   static inline Data Dec(const Data d) { return d >> 1; }         // lowest bit 1 means data ok.
   typedef std::atomic<Data> AData;
   static_assert(sizeof(Data) == sizeof(AData));
   // static_assert(sizeof(Data) == sizeof(AData));
   AData buf;
};
@@ -67,6 +68,8 @@
   typedef std::function<Data(const Data)> Handler;
   bool ClientRequest(const Data request, Data &reply);
   bool ServerProcess(Handler onReq);
   AtomicReqRep() :
       data_(0), timestamp_(now()) {}
private:
   enum State {
@@ -79,7 +82,7 @@
   static Data Decode(Data d) { return d >> 3; }
   typedef std::chrono::steady_clock steady_clock;
   typedef steady_clock::duration Duration;
   Duration now() { return steady_clock::now().time_since_epoch(); }
   static Duration now() { return steady_clock::now().time_since_epoch(); }
   bool DataCas(Data expected, Data val) { return data_.compare_exchange_strong(expected, val); }
   std::atomic<Data> data_;