#ifndef TOOLS_MEMORY_SIMULATOR_MEMORY_SIMULATOR_H_
#define TOOLS_MEMORY_SIMULATOR_MEMORY_SIMULATOR_H_
#include <stdint.h>
#include <cstdint>
#include <memory>
#include "base/rand_util.h"
#include "base/time/time.h"
#include "base/timer/timer.h"
#include "tools/memory/simulator/memory_holder.h"
namespace memory_simulator {
class MemorySimulator {
public:
MemorySimulator();
~MemorySimulator();
void Start(int64_t page_alloc_per_second,
int64_t page_read_per_second,
int64_t page_write_per_second,
int64_t max_pages_allocated,
base::TimeTicks read_deadline,
base::TimeTicks write_deadline);
void StopAndFree();
int64_t GetPagesAllocated() const;
int64_t GetPagesRead() const;
int64_t GetPagesWritten() const;
private:
void Allocate();
void Read();
void Write();
std::unique_ptr<MemoryHolder> memory_holder_;
int64_t pages_allocated_ = 0;
int64_t max_pages_allocated_ = 0;
int64_t pages_read_ = 0;
int64_t pages_written_ = 0;
base::MetronomeTimer alloc_timer_;
base::MetronomeTimer read_timer_;
base::MetronomeTimer write_timer_;
base::TimeTicks read_deadline_;
base::TimeTicks write_deadline_;
};
}
#endif