Changeset View
Changeset View
Standalone View
Standalone View
src/leveldb/util/env_win.cc
// This file contains source that originates from: | // This file contains source that originates from: | ||||
// http://code.google.com/p/leveldbwin/source/browse/trunk/win32_impl_src/env_win32.h | // http://code.google.com/p/leveldbwin/source/browse/trunk/win32_impl_src/env_win32.h | ||||
// http://code.google.com/p/leveldbwin/source/browse/trunk/win32_impl_src/port_win32.cc | // http://code.google.com/p/leveldbwin/source/browse/trunk/win32_impl_src/port_win32.cc | ||||
// Those files dont' have any explict license headers but the | // Those files don't have any explicit license headers but the | ||||
// project (http://code.google.com/p/leveldbwin/) lists the 'New BSD License' | // project (http://code.google.com/p/leveldbwin/) lists the 'New BSD License' | ||||
// as the license. | // as the license. | ||||
#if defined(LEVELDB_PLATFORM_WINDOWS) | #if defined(LEVELDB_PLATFORM_WINDOWS) | ||||
#include <map> | #include <map> | ||||
#include "leveldb/env.h" | #include "leveldb/env.h" | ||||
▲ Show 20 Lines • Show All 337 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
BOOL Win32SequentialFile::_Init() | BOOL Win32SequentialFile::_Init() | ||||
{ | { | ||||
std::wstring path; | std::wstring path; | ||||
ToWidePath(_filename, path); | ToWidePath(_filename, path); | ||||
_hFile = CreateFileW(path.c_str(), | _hFile = CreateFileW(path.c_str(), | ||||
GENERIC_READ, | GENERIC_READ, | ||||
FILE_SHARE_READ, | FILE_SHARE_READ | FILE_SHARE_WRITE, | ||||
NULL, | NULL, | ||||
OPEN_EXISTING, | OPEN_EXISTING, | ||||
FILE_ATTRIBUTE_NORMAL, | FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, | ||||
NULL); | NULL); | ||||
if (_hFile == INVALID_HANDLE_VALUE) | |||||
_hFile = NULL; | |||||
return _hFile ? TRUE : FALSE; | return _hFile ? TRUE : FALSE; | ||||
} | } | ||||
void Win32SequentialFile::_CleanUp() | void Win32SequentialFile::_CleanUp() | ||||
{ | { | ||||
if(_hFile){ | if(_hFile){ | ||||
CloseHandle(_hFile); | CloseHandle(_hFile); | ||||
_hFile = NULL; | _hFile = NULL; | ||||
Show All 27 Lines | else | ||||
*result = Slice(scratch,hasRead); | *result = Slice(scratch,hasRead); | ||||
return sRet; | return sRet; | ||||
} | } | ||||
BOOL Win32RandomAccessFile::_Init( LPCWSTR path ) | BOOL Win32RandomAccessFile::_Init( LPCWSTR path ) | ||||
{ | { | ||||
BOOL bRet = FALSE; | BOOL bRet = FALSE; | ||||
if(!_hFile) | if(!_hFile) | ||||
_hFile = ::CreateFileW(path,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING, | _hFile = ::CreateFileW(path,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING, | ||||
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS,NULL); | FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS,NULL); | ||||
if(!_hFile || _hFile == INVALID_HANDLE_VALUE ) | if(!_hFile || _hFile == INVALID_HANDLE_VALUE ) | ||||
_hFile = NULL; | _hFile = NULL; | ||||
else | else | ||||
bRet = TRUE; | bRet = TRUE; | ||||
return bRet; | return bRet; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 249 Lines • ▼ Show 20 Lines | |||||
Status Win32Env::GetFileSize( const std::string& fname, uint64_t* file_size ) | Status Win32Env::GetFileSize( const std::string& fname, uint64_t* file_size ) | ||||
{ | { | ||||
Status sRet; | Status sRet; | ||||
std::string path = fname; | std::string path = fname; | ||||
std::wstring wpath; | std::wstring wpath; | ||||
ToWidePath(ModifyPath(path), wpath); | ToWidePath(ModifyPath(path), wpath); | ||||
HANDLE file = ::CreateFileW(wpath.c_str(), | HANDLE file = ::CreateFileW(wpath.c_str(), | ||||
GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); | GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); | ||||
LARGE_INTEGER li; | LARGE_INTEGER li; | ||||
if(::GetFileSizeEx(file,&li)){ | if(::GetFileSizeEx(file,&li)){ | ||||
*file_size = (uint64_t)li.QuadPart; | *file_size = (uint64_t)li.QuadPart; | ||||
}else | }else | ||||
sRet = Status::IOError(path,"Could not get the file size."); | sRet = Status::IOError(path,"Could not get the file size."); | ||||
CloseHandle(file); | CloseHandle(file); | ||||
return sRet; | return sRet; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 216 Lines • Show Last 20 Lines |