susumu.yata
null+****@clear*****
Fri Feb 22 14:15:32 JST 2013
susumu.yata 2013-02-22 14:15:32 +0900 (Fri, 22 Feb 2013) New Revision: c41c158ab2a13d04e53290dad933f38e1ac246f2 https://github.com/groonga/grnxx/commit/c41c158ab2a13d04e53290dad933f38e1ac246f2 Log: Update grnxx::io::View for Windows. Modified files: lib/io/view-windows.cpp lib/io/view-windows.hpp Modified: lib/io/view-windows.cpp (+15 -23) =================================================================== --- lib/io/view-windows.cpp 2013-02-22 14:15:22 +0900 (7519419) +++ lib/io/view-windows.cpp 2013-02-22 14:15:32 +0900 (c312fd3) @@ -22,6 +22,7 @@ #include "../error.hpp" #include "../exception.hpp" #include "../logger.hpp" +#include "file.hpp" namespace grnxx { namespace io { @@ -42,7 +43,7 @@ ViewImpl::~ViewImpl() { } } -std::unique_ptr<ViewImpl> ViewImpl::map(ViewFlags flags, uint64_t size) { +ViewImpl *ViewImpl::open(ViewFlags flags, uint64_t size) { if (size == 0) { GRNXX_ERROR() << "invalid argument: size = " << size; GRNXX_THROW(); @@ -53,22 +54,22 @@ std::unique_ptr<ViewImpl> ViewImpl::map(ViewFlags flags, uint64_t size) { GRNXX_ERROR() << "new grnxx::io::ViewImpl failed"; GRNXX_THROW(); } - view->map_on_memory(flags, size); - return view; + view->open_view(flags, size); + return view.release(); } -std::unique_ptr<ViewImpl> ViewImpl::map(ViewFlags flags, const File &file) { +ViewImpl *ViewImpl::open(ViewFlags flags, const File &file) { std::unique_ptr<ViewImpl> view(new (std::nothrow) ViewImpl); if (!view) { GRNXX_ERROR() << "new grnxx::io::ViewImpl failed"; GRNXX_THROW(); } - view->map_on_file(flags, file, 0, 0); - return view; + view->open_view(flags, file, 0, 0); + return view.release(); } -std::unique_ptr<ViewImpl> ViewImpl::map(ViewFlags flags, const File &file, - uint64_t offset, uint64_t size) { +ViewImpl *ViewImpl::open(ViewFlags flags, const File &file, + uint64_t offset, uint64_t size) { if (size == 0) { GRNXX_ERROR() << "invalid argument: size = " << size; GRNXX_THROW(); @@ -79,8 +80,8 @@ std::unique_ptr<ViewImpl> ViewImpl::map(ViewFlags flags, const File &file, GRNXX_ERROR() << "new grnxx::io::ViewImpl failed"; GRNXX_THROW(); } - view->map_on_file(flags, file, offset, size); - return view; + view->open_view(flags, file, offset, size); + return view.release(); } void ViewImpl::sync() { @@ -109,10 +110,9 @@ void ViewImpl::sync(uint64_t offset, uint64_t size) { } ViewImpl::ViewImpl() - : file_(), flags_(ViewFlags::none()), handle_(nullptr), - address_(nullptr), offset_(0), size_(0) {} + : flags_(ViewFlags::none()), handle_(nullptr), address_(nullptr), size_(0) {} -void ViewImpl::map_on_memory(ViewFlags, uint64_t size) { +void ViewImpl::open_view(ViewFlags, uint64_t size) { flags_ = VIEW_PRIVATE | VIEW_ANONYMOUS; size_ = size; @@ -135,7 +135,7 @@ void ViewImpl::map_on_memory(ViewFlags, uint64_t size) { } } -void ViewImpl::map_on_file(ViewFlags flags, const File &file, +void ViewImpl::open_view(ViewFlags flags, const File &file, uint64_t offset, uint64_t size) { const uint64_t file_size = file.size(); if (file_size == 0) { @@ -157,8 +157,6 @@ void ViewImpl::map_on_file(ViewFlags flags, const File &file, GRNXX_THROW(); } - file_ = file; - offset_ = offset; size_ = (size != 0) ? size : file_size; int protection_mode = PAGE_READWRITE; @@ -219,14 +217,8 @@ StringBuilder &ViewImpl::write_to(StringBuilder &builder) const { return builder; } - if (file_) { - builder << "{ file = " << file_.path(); - } else { - builder << "{ file = n/a"; - } - return builder << ", flags = " << flags_ + return builder << "{ flags = " << flags_ << ", address = " << address_ - << ", offset = " << offset_ << ", size = " << size_ << " }"; } Modified: lib/io/view-windows.hpp (+8 -24) =================================================================== --- lib/io/view-windows.hpp 2013-02-22 14:15:22 +0900 (9979249) +++ lib/io/view-windows.hpp 2013-02-22 14:15:32 +0900 (293220a) @@ -34,30 +34,24 @@ namespace grnxx { namespace io { -class ViewImpl { +class ViewImpl : public View { public: ~ViewImpl(); - static std::unique_ptr<ViewImpl> map(ViewFlags flags, uint64_t size); - static std::unique_ptr<ViewImpl> map(ViewFlags flags, const File &file); - static std::unique_ptr<ViewImpl> map(ViewFlags flags, const File &file, - uint64_t offset, uint64_t size); + static ViewImpl *open(ViewFlags flags, uint64_t size); + static ViewImpl *open(ViewFlags flags, const File &file); + static ViewImpl *open(ViewFlags flags, const File &file, + uint64_t offset, uint64_t size); void sync(); void sync(uint64_t offset, uint64_t size); - File file() const { - return file_; - } ViewFlags flags() const { return flags_; } void *address() const { return address_; } - uint64_t offset() const { - return offset_; - } uint64_t size() const { return size_; } @@ -65,28 +59,18 @@ class ViewImpl { StringBuilder &write_to(StringBuilder &builder) const; private: - File file_; ViewFlags flags_; HANDLE handle_; void *address_; - uint64_t offset_; uint64_t size_; ViewImpl(); - void map_on_memory(ViewFlags flags, uint64_t size); - void map_on_file(ViewFlags flags, const File &file, - uint64_t offset, uint64_t size); - - ViewImpl(const ViewImpl &); - ViewImpl &operator=(const ViewImpl &); + void open_view(ViewFlags flags, uint64_t size); + void open_view(ViewFlags flags, const File &file, + uint64_t offset, uint64_t size); }; -inline StringBuilder &operator<<(StringBuilder &builder, - const ViewImpl &view) { - return view.write_to(builder); -} - } // namespace io } // namespace grnxx -------------- next part -------------- HTML����������������������������...ダウンロード