#include <algorithm>
-namespace rocksdb {
+namespace ROCKSDB_NAMESPACE {
ThreadStatusUpdater* CreateThreadStatusUpdater() {
return new ThreadStatusUpdater();
Status WinEnvIO::Truncate(const std::string& fname, size_t size) {
Status s;
- int result = rocksdb::port::Truncate(fname, size);
+ int result = ROCKSDB_NAMESPACE::port::Truncate(fname, size);
if (result != 0) {
s = IOError("Failed to truncate: " + fname, errno);
}
return li.QuadPart;
}
using namespace std::chrono;
- return duration_cast<microseconds>(
- high_resolution_clock::now().time_since_epoch()).count();
+ return duration_cast<microseconds>(system_clock::now().time_since_epoch())
+ .count();
}
uint64_t WinEnvIO::NowNanos() {
return result;
}
+Status WinEnvIO::GetFreeSpace(const std::string& path, uint64_t* diskfree) {
+ assert(diskfree != nullptr);
+ ULARGE_INTEGER freeBytes;
+ BOOL f = RX_GetDiskFreeSpaceEx(RX_FN(path).c_str(), &freeBytes, NULL, NULL);
+ if (f) {
+ *diskfree = freeBytes.QuadPart;
+ return Status::OK();
+ } else {
+ DWORD lastError = GetLastError();
+ return IOErrorFromWindowsError("Failed to get free space: " + path,
+ lastError);
+ }
+}
+
EnvOptions WinEnvIO::OptimizeForLogWrite(const EnvOptions& env_options,
const DBOptions& db_options) const {
EnvOptions optimized(env_options);
state->user_function = function;
state->arg = arg;
try {
-
- rocksdb::port::WindowsThread th(&StartThreadWrapper, state.get());
+ ROCKSDB_NAMESPACE::port::WindowsThread th(&StartThreadWrapper, state.get());
state.release();
std::lock_guard<std::mutex> lg(mu_);
return winenv_threads_.GetThreadID();
}
+Status WinEnv::GetFreeSpace(const std::string& path, uint64_t* diskfree) {
+ return winenv_io_.GetFreeSpace(path, diskfree);
+}
+
void WinEnv::SleepForMicroseconds(int micros) {
return winenv_threads_.SleepForMicroseconds(micros);
}
return result;
}
-} // namespace rocksdb
+} // namespace ROCKSDB_NAMESPACE